[PHP-users 13062] Re: PHP+PostgreSQLに特定のIPのみ接続させる
Katsuyuki Maeda
php-users@php.gr.jp
Wed, 05 Feb 2003 21:53:26 +0900
前田@nanetです。
On Wed, 05 Feb 2003 18:36:37 +0900
Yasuo Ohgaki <yohgaki@ohgaki.net> wrote:
> パスワードを隠す方法には7.3から.pgpassにパスワードを定義
> できるようになりました。
>
> http://osb.sra.co.jp/PostgreSQL/7.3/changes.html
便利そうだと思って、早速試してみたのですが、残念ながら、
PHPからは 7.3.1では使えない様です。
どちらかというと、PostgreSQL関係の話題ですが、
せっかく教えて頂いて、調べたのでまとめておきます。
--------
[PHP-users 2665] PHPからデータベースを使うと他のユーザの
DBも触れるのだけど、どうすると良いでしょう。
http://ns1.php.gr.jp/pipermail/php-users/2001-October/002672.html
[PHP-users 2668] suexec使っても、ソースを読まれるとパスワードが
見えてしまう。
(PHP側の)ユーザー認証を接続に利用すると良いのではないか。
(補足)同じホストでDBが動いているのであれば、ユーザー権限そのもの
で認証ができますが、他のホストで動いている場合は、パスワード等の
方法で認証する必要があります。
[PHP-users 2670] suexec使うとして、スクリプト自体にパスワードを
書かず、別ファイルに記述して読み込む。
[PHP-users 2674] 環境変数で渡す方法を使う
[PHP-users 2678] 環境変数はシステムによっては他のユーザーから
読み出すことができて危険という指摘。
[PHP-users 2681] 環境変数だと実際に読み出せる
しばらく間が空いて、
[PHP-users 12961] PostgreSQL データベース認証の話題
[PHP-users 13055] .pgpass が使える様になった。HOME
ディレクトリに置いたファイルにパスワードが記述できる。
.pgpassのフォーマットは、
http://developer.postgresql.org/docs/postgres/libpq-files.html
にある通り、
hostname:port:database:username:password
の形式。パーミッションは0600にしないと意味が無い。
(参考:[pgsql-jp: 28628])
7.3.1 ではPHPで動作しない理由は、libpq側のバグで、パスワード引数が
NULLだった時に.pgpassを読み出す様にしたのだけど、PHP4はPQconnectDBで、
コネクションストリングを渡していて、パスワードとして空文字列が
渡ってしまい、これはNULLと等しくないので、結果としてデフォルト
パスワードが使われるという事情の様です。
詳しくは、
http://developer.postgresql.org/cvsweb.cgi/pgsql-server/src/interfaces/libpq/fe-connect.c
をご覧下さい。
--
Nagasaki Network Service (http://www.nanet.co.jp/)
kei@nanet.co.jp <Katsuyuki Maeda> (http://www.nanet.co.jp/~kei/)
kei-neverread@nanet.co.jp (for spam ONLY ゴミ箱直行便)
「終わらないプロジェクトはない。終わっちゃうプロジェクトはあるけど。」