| « MySQL 4.1.18に更新 | mysqlのrootユーザについての補足 » |
PHP Screwを使ってPHPスクリプトを暗号化してみた
最近、PHP + MySQLなアプリケーションが増えて来て、自分でもよく利用している。
でも、せっかくデータベースの接続のためにパスワード認証を設けても、PHPのソースに生パスワードで記入するものが多く、気分的に不安が付きまとう。
普通、ローカルのユーザじゃないと、ソースコードは覗けないと思うけど、過去、ApacheにPHPをハンドルさせるのを忘れたりして、ソース丸見えな状況になった例もなきにしもあらずだし…。
見られて困るものなら、見られないようにすれば良いだけの話で、パスワード等を記述したファイルは、ドキュメントルート外に移動させて、パーミッションを落とし、それをインクルードするだけの同名のPHPスクリプトに置き換えるって手法をまま利用している。
でも、所詮、平パス。いっそ、人間には読めなくしてみれば、不安も減るだろうということで、
というロイヤリティー フリーなPHP暗号化モジュールを使ってみました。
インストール
portsからインストールする場合は、
# cd /usr/ports/www/php-screw # make CRYPTKEY="11152, 368, 192, 1281, 62" # make install
とします。
ここで、CRYPTKEYとして指定するのは、short型の数値の任意の長さの配列です。自由に置き換えて下さい。ただし、一旦指定したものは忘れないで下さい。次回、再ビルドした際、CRYPTKEYの値が前に指定したものと違っていると、既に暗号化した分のPHPスクリプトを復号できなくなってしまいますので。
設定
インストールが済んだら、有効化するために、
- /usr/local/etc/php/extensions.ini
に、
extension=php_screw.so
と復号化モジュールを追加し、Apacheを再起動させます。
これで暗号化されたPHPスクリプトあっても、実行できるようになります。
PHPスクリプトの暗号化
PHPスクリプトを暗号化するのは簡単です。同時に
/usr/local/bin/scew
というコマンドがインストールされますので、これを使用します。
例えば、データベースのパスワード等が書かれたLocalSettings.phpというファイルがある場合、
# screw LocalSettings.php
とするだけで暗号化されます。オリジナルのファイルは、同じ場所に「.screw」という拡張子がついてリネームされます。適宜、見えない場所に保管するなりして下さい(そのまま放置するなら、暗号化した意味がない)。
使用感
見られたとしても、実害はないと思うけど、主だったデータベース接続用のパスワードなどが書かれたPHPスクリプトを暗号化してみた。この手のものは、商用のものが少なくないけど、気軽に使えていい感じ。もっとも、私の場合、ほとんど気休め(ぱっと見わからなくするだけ)が目的で、本来の用途とは違うようだが…。(ローカルで詳しい人に粘着されたら終わり)
関連情報
このページより、
が参考になります。
Trackback address for this post
Trackback URL (right click and copy shortcut/link location)
Feedback awaiting moderation
This post has 20 feedbacks awaiting moderation...