お客からの要望で、この度、PHPソースの難読化ソフト「プランセスSPHP」を開発しました(株式会社プランセスから発売)。実際、PHPソースを難読化したいと思うケースは結構あると思います。
- 苦労して開発したPHPソースを納品先のクライアントや無料配布先のユーザーに真似されたくない。
- 有料アプリケーションを、お金を払っていない人に使わせたくない。
(ドメイン限定機能によるコピー・複製禁止)。
- MySQLなどデータベースの接続IDとパスワードなどが丸見栄状態になるのを防ぎたい。
- 将来の見込み客に体験版として提供したいので、一定期間のみ利用可能用に制限したり、アラートを表示させるなど、様々な制限を加えたい。しかし、難読化していない場合は、そのロジック部分を根こそぎ削除されたら『終わり』という問題があるので、難読化することで(どこにそのロジック部分があるか分からない状態にして)、それを防止したい。
- 「無料で配布するアプリケーションの代価として、リンクバックを強制させたいが、勝手にリンクを削除されるのを防ぎたい。」というようなSEO的な目的。
- 著作権表示をソース内でコメント形式で書いているが、削除されるのを防止したい。
などです。
今回、はじめてPHPソースの難読化ソフトを作ってみたのですが、今までも、そのようなお問い合わせは結構ありました。PHPアプリケーションにおけるコンテンツ(画像やテキスト情報など)の保護を目的としたHTMLソース難読化ソフト用PHPライブラリー「サーバサイドSHTML for PHP」という製品を数年前から発売している関係で、そのような問い合わせが入っていたのでした。「サーバサイドSHTML for PHP」の方は、PHPソースそのものを難読化するのではなく、PHPアプリケーションが最終的にブラウザに出力するHTMLソースをあらかじめサーバ側でJavascript化して、難読化するというものであり、全然目的が異なるため、そのようなお問い合わせに対しては、「『サーバサイドSHTML for PHP』ではなく、他社の製品を御利用いただく必要があります。」とお答えするしかなかったのですが、今回、「こちら側の開発完了まで付き合ってくださる」という、ありがたいお客様が現れましたので、作ってみることにしました。
PHPソースの難読化と言えば既に有名な製品「ionCube PHP Encoder」(以下、「ionCube」)というのがあり、こちらは難読化のロジック部分は完全にバイナリー化されているため、解読が非常に難しい状態になっていて、到底太刀打ちできないとは分かっていたのですが、敢えて作ってみることにしました。
実は、以前、あるPHPライブラリーの体験版を個人的に試したことがあって、そのライブラリーが「ionCube」で暗号化されていました。率直な感想として、設置が難しく(自分で言うのは何ですが、私は素人ではないです。)、少し(かなり?)手こずったことがありました。ここまで解読が不可能という状態にしなくても、もっと簡単に・直感的に設置できるPHPソース難読化ソフトがあれば、結構売れるのでは?という思いがありました。
ionCubeにはどのみち勝てないというのは分かっていたので(dll形式にはしたくありませんでしたし、またその方面の技術も持ち合わせていません。)、最初はごく簡単に作成するつもりでしたが、作り出すうちにあれもこれもという感じになって、結構大掛かりなソフトになってしまいました。難読化ソースの強度も、一般的な利用目的の場合、何とか、これで十分なのではないかという程度には仕上げることができました。
また、ionCubeで可能かどうか分かりませんが、「プランセスSPHP」では、PHPソースの一部分のみを難読化することも可能にしました。
全部を難読化したい場合ももちろんあるでしょうが、あまり全部が全部難読化してしまいますと、クライアント(利用者)に不審に思われる可能性もゼロでないと思えたからです。難読化している部分で何をしているか分からない(「機密情報をリモートサーバに飛ばすロジックを入れているかもしれません。」など)ので、不安に思うクライアントがいて、余計に売れないなどの懸念がある場合もあるかもしれません。また、すべてが難読化されていると、クライアント(利用者側)側で一切のカスタマイズが不可能になり、場合によっては不都合があるでしょう。また、ソースを提供する側でもメンテナンスを柔軟に行うためには、重要部分だけを難読化して、残りはいつでも変更可能なようにしておいたほうが都合が良い場合もあるでしょう。
「プランセスSPHP」の体験版もありますので、PHP開発者の皆様、是非、お試しください。
プランセスSPHPの詳細: http://www.sphp.jp


