[PHP-users 785] Re: PHPコードを他のユーザから隠蔽する方法

Naofumi Kondoh php-users@php.gr.jp
Sat, 21 Jul 2001 03:46:50 +0900


ソフト工房の近藤です。こんばんは。

Toshikazu Yoshikawa wrote:
> 
> こんばんは、吉川@アンカットです。
> 
> たまたまPHP-3.0.18-i18n-ja-2とPostgreSQL-7.1.2を使用した
> スクリプトを書いてて、ふと疑問に思ったことがありまして質問させていただきます。
> 
> PHPからPostgreSQLに接続する際に、pg_connect()関数を用いますが、
> データベースはpg_hba.confの設定によりパスワード保護を設けてますので、
> 引数として "dbname=aaa user=bbb password=ccc"の形で利用しています。
> 当然、スクリプトの中にデータベース接続のためのパスワードを埋め込まざるを得ません。
....略....

私も同じ問題をかかえていて、対策検討中のところです。

吉川さんのご質問から少し外れますが、スクリプト中の
パスワードについては、次のような各ケースへの対応を
思案中です。いいアイデアがありましたら、お教えいた
だきたく。

(A) 同一サーバーの他の Web User から見られないようにする。

 1。Zend コンパイラを使用する。
 2。safe_mode を使用。
    使用目的や環境によっては使えない場合がある。

ユーザー間で機密にしなければいけないデーターを、同一
Web Server 上のスクリプト言語で運用すること自体に無理
があるのでしょうか。


(B) プログラム外注先に実機パスワードを知られないようにする。

 1。DB 接続は、指定ライブラリー(include file)のクラス
    を使ってのみ行なうこととし、同ライブラリから、パス
    ワード記載したファイルを include する。ファイル名
    は、実機/開発機同一だが、中身のパスワードは変える。
  

(C) 保守を外注する場合。

開発機上で保守可能なら(B)と同じ。
実機でしか発生しないようなトラブルで実機での検証が必要な
場合が問題。

 1。(B)と同様な手法をとった上で、保守終了後に、スクリプト
    と、DB のパスワードを同時に変更する。
    多数のユーザーを使い分けていると結構面倒。

 2。パスワードを C などのコンパイル可能な言語から、p_open
    などで実行時に PHP に渡すようにする。   これだけだと、
    実行すれば、パスワードがわかってしまうので、同一権限
    のユーザーを保守用と本運用用に2組づつ登録しておいて、
    保守時には、ワンタッチで、保守用ユーザーに切りかえる。

    あるいは、ワンタッチで、DB パスワードまで書き換えるよ
    うなツールを作る。

    UNIX で、CE などがハードメンテにくるとき、ROOT のパス
    ワードが必要なので、root とは異るユーザー名パスワード
    のルート権限ユーザーを CE 用に登録しておくのと同じよ
    うな発想です。勿論、保守が終れば即パスワード変更。

    外部プログラム呼出しでオーバヘッドがかかりますが、
    login の頻度は、他の処理よりはるかに少いはずなので、
    さほどネックにはならないと考えてますがどうでしょう。

まだ検討中で、どれも一長一短なんですが、何かうまいやり
方がないでしょうか。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
 (株)ソフト工房   近藤直文   Email:  nkon@shonan.ne.jp 
          http://www.SOFTKOUBOU.co.jp/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/