[PHP-users 12992] Re: PHP+PostgreSQLに特定のIPのみ接続させる

Katsuyuki Maeda php-users@php.gr.jp
Tue, 04 Feb 2003 17:31:24 +0900


 前田@nanetです。
#元記事書かれた方がどうこうじゃなくて、
#一般的な話として読んでください。

 ここで話題に上がっているように、PHP経由でdatabaseを扱って、
データベースの中には公開情報と非公開情報が混在しているという
アプリケーションは少なくないと思います。
 ちょうど別スレッドで「SQLコマンドインジェクション」の話が
話題になっていますが、十分に注意していてもSQLコマンドを
注入される可能性がありますし、wwwユーザの権限を奪取される
可能性も、減らすことはできても否定することは難しいと思います。

 この辺りを考慮に入れると、

 ・ユーザーに公開しているアプリケーションは、wwwユーザの
 権限で動いている(モジュール版)。
 ・ひょっとすると、wwwユーザの権限は奪われるかも知れない。

 という仮定をして、
 データベースに格納するテーブルは、wwwユーザにどうしても
必要な権限のみに留めて、コマンドラインかcron、管理者向けの
CGIプログラム(wwwユーザじゃない権限で動く)で、転記なり何なり
の処理をするのが良いように思います。

 例えば、ユーザー情報の登録画面を実装するのに、wwwユーザに
読み出し権限を与える必要は無いはずで、追加の権限があれば良い
筈です。
 PHPに限りませんが、そもそも、wwwユーザに与えちゃいけない
権限を与えているWebアプリケーションは非常に多い気がします。
 wwwユーザ権限を取得されても少なくとも最低限のセキュリティが
確保できる作りを目指したいところです。

 結局、PHPに閉じた世界ではなくて、スキーマの設計を含めて
広い部分を考えないとセキュリティ向上させるのは難しい様です。

 PHPよりもメタになってしまいましたが、suExecみたいな仕組みが
使えない中でのセキュリティ確保をどうやっていくか…という手法の
議論に繋がるとうれしいです。

-- 
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 ゴミ箱直行便)
「終わらないプロジェクトはない。終わっちゃうプロジェクトはあるけど。」