プロが教えるわが家の防犯対策術!

PHPファイルの暗号化(難読化)方法

PHPファイルを暗号化(難読化)する方法を探しています。

現在は、有料の暗号化ツールを使用せずに、
自作で暗号化(難読化)を実施可能かどうかを検討しております。

ファイル全体を暗号化したいのですが、
ファイル内容は、PHPの開始タグ(<?php)、終了タグ(?>)とHTMLタグが混在していて
それをbase64_encodeなどを使用し、暗号化をかけた場合、
base64_decodeで復号をかけたデータをブラウザにて実行させたい場合は、
どのようにすればよいか困っています。

eval関数は、phpソースコードを実行するため、
PHPの開始タグ、終了タグをのぞいた、phpコードしか実行できません。
echo関数では、phpソースコードもそのまま出力されます。
PHPの開始タグ、終了タグとHTMLタグ混在していても、
ブラウザ上でphpコードの実行とHTMLタグの出力が実行できる方法はないでしょうか。

ネット上で調べてみましたが、
phpコードのみを暗号化して、eval関数で実行するものしか
発見することができませんでした。
そもそも、ファイル全体を上記のような方法で復号化⇒実行することは無理で、
ファイルの中身を解析し、タグの置き換えや、
eval関数が使用可能な処理とそうでない処理とに分けるようなことになるのでしょうか。

暗号の目的は、ファイルが一見、何を行っているのかわからなく、
そのまま処理を使いまわしできないようにしたいためです。
PHPや暗号化に詳しい人が復号化できてしまうことは、理解しております。

何か方法やアドバイス等、ございましたら、
ご回答頂ければと思います。

phpバージョンは、5.2.14です。

以上、よろしくお願いします。

A 回答 (3件)

私用(趣味)で提供しているのなら、割り切った方が良いのでは?


業務で提供なら、それこそ再利用の禁止を契約書に明記する方向で、金額上乗せ出来るのなら上乗せしておくとか。

私用なら兎も角、業務だと、そもそもソース見る人はプロになると思いますので。
(提供先の担当者が見るとは限りませんから。)

この回答への補足

今回は業務での提供となります。
契約書に再利用や改変などは明記することとなりますが、
もう少し調査を行い、暗号化が厳しいようでしたら、
ソースはそのままとするか、暗号化ソフトの購入かを上司に決定して頂きます。

ご意見ありがとうございます。

補足日時:2010/09/21 01:28
    • good
    • 0
この回答へのお礼

契約書に再利用や改変などを明記するとともに、
また、ソースを当初予定していました簡単な暗号化をかけることとしました。
暗号化は、base64方式で暗号化し、復号した情報に対して
PHPコードとPHPコードでない処理をeval関数とecho関数で実行するように
暗号化ファイルを一括で生成するツールをPHPで自作し、対応しました。

ご回答ありがとうございました。

お礼日時:2010/09/28 14:11

使用するサーバ環境はLinux/windowsなど


どのような環境でしょうか?

この回答への補足

サーバ環境はWindowsで調査しています。

Linuxでは、php_screwで暗号化した状態での動作確認はできました。
試しに、Windows用にphp_screwを改良してみましたが、
一応動作をしたのですが、何度かajax通信を実施することで
サーバが固まってしまい、うまく改良できなかったようです。

php_screwまでの暗号化は求めておりませんが、
windows版でソース内容を上記の質問内容に記載のように
暗号化(難読化)できればと考えております。

もう少し調査を続けたいと思います。

以上、よろしくお願いします。

補足日時:2010/09/21 02:58
    • good
    • 0
この回答へのお礼

契約書に再利用や改変などを明記するとともに、
また、ソースを当初予定していました簡単な暗号化をかけることとしました。
暗号化は、base64方式で暗号化し、復号した情報に対して
PHPコードとPHPコードでない処理をeval関数とecho関数で実行するように
暗号化ファイルを一括で生成するツールをPHPで自作し、対応しました。

ご回答ありがとうございました。

お礼日時:2010/09/28 14:11

phpのソースコードを誰かに提供する、と言う事でしょうか?


サーバ上で貴方が作ったphpコードを実行するだけなら、利用者にはソースは見えないので、暗号化する意味は無いと思いますが。

この回答への補足

言葉足らずで申し訳ありません。
phpのソースコードを提供して使用して頂くことになり、
phpファイルを直接開くことが可能な状態にあります。
そのため、暗号化(難読化)をしなければならず、
今回、ここで質問させて頂いております。

よろしくお願いします。

補足日時:2010/09/19 19:27
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!