|
機密性を確保するためには、業務プログラムのソースコードは見られないようにすべきである。ソースコードにパスワードなどの機密情報が含まれている場合もあるだろうし、セキュリティホールが残っていないとも言えないからだ。 今回は、Apache の設定を中心に、PHP ソースコードを漏らさないようにする方法を紹介する。 |
.htaccessの設定に注意 |
|
PHP を動かしている Apache サーバでは、httpd.conf に下記のような設定が記述されているはずである。
AddType application/x-httpd-php .phpこの設定が有効であり、http通信でアクセスしてくるクライアントに対して、PHP ソースコードが見られることはない。 ところが、ディレクトリ毎に設定している .htaccess ファイルの中に、 AddType application/octet-stream .phpのように記述されていると、httpd.conf の設定がオーバーライド(上書き)され、.htaccess の設定が優先される。しかも、この設定は、拡張子 php のファイルをダウンロードできるようにするものだ。 うっかりミスがないよう、.htaccess の設定には十分注意してほしい。 |
|
拡張子PHPを偽装する |
|
|
URL の最後の拡張子が "php" だと、その画面で PHP を実行しているということを告白しているようなものだ。そこで、拡張子を "html" に偽装することがある。中身は PHP ソースコードだが、拡張子は html にしておくのである。
やり方は簡単だ。httpd.conf に下記のような設定を加えればよい。 AddType application/x-httpd-php .php .htmlただし、この設定を行うと、通常の html ファイルも PHP として解釈されるので、応答速度が若干低下する(サーバーの負荷が増大する)。 現実解としては、PHP スクリプトがあるディレクトリのみ、.htaccess で上記の設定をしてやるといいだろう。 |
|
Basic認証をかける |
|
|
Apache では、特定のディレクトリへアクセスする際にユーザー認証を求める方法として、Basic認証と Digest認証の 2種類の方式を備えている。 重要な PHP ファイルは Basic認証がかかったディレクトリに配置し、一般的な PHP スクリプトから関数 include や include で呼び出すようにすれば、漏洩リスクは減少する。 ここでは、多くのブラウザで対応しているBasic認証を用いることにする。 たとえば、"/var/public_html/cgi/" というディレクトリに Basic認証をかけたければ、そのディレクトリに .htaccess というテキストファイルを配置する。.htaccess の内容は下記の通りだ。 AuthType BasicAuthName は、認証画面の領域というところに表示される内容で、日本語も利用できる。 次に、AuthUserFile で指定するパスワードファイル .htaccess を用意する。 pahoo というユーザー名でパスワードファイル .htaccess を作る場合は、htpasswd コマンド(apache インストールディレクトリの配下にある)を使って、以下のように操作する。"********" はパスワードである。 # /usr/local/apache2/bin/htpasswd -mc /var/public_html/cgi/.htpasswd pahooパスワードファイル .htaccess はテキストファイルだが、見てもらうと分かるように、パスワードは暗号化されており、.htaccess が盗み見されたとしても元のパスワードを知ることはできない。 |
|
参考書籍 |
|
|
|
参考サイト |
|
|
|
(この項おわり)
|
|
|
|
|
2008年04月10日更新
写真と記事 (C)2008 studio pahoo
(※)本ページはリンクフリーですが、複製・転載時にはご一報ください。 |