この記事はブロックされています。続きを読みたい方はログインをして下さい。会員ではない方は新規会員登録をして下さい。


ワードプレス プラグインAPI化計画なんてものを考えてみた

日々、ワードプレスのプラグイン開発に勤しんでいる塾長の長岡です。
現在、情報起業メガパッケージのプラグインを全てバージョンアップするための作業をしています。
色々とマイナーチェンジして使いやすくなる予定です。

それで、他にも色々と開発を進めているのですが、困ったことがいくつかあります。
デモ版というか、試用版を作りたいけれどPHPなので難しい、ということです。
PHPはプログラムがコンパイルされていないため見ようと思えばソースコードがすぐに見れます。
なので、デモ版とか試用版を作るには本バージョンとは違う構造にする必要があるわけで、一つのツールにつき、開発が二系統になるという煩雑さが生まれてしまいます。
現在22本はツールを作っているため、44本の管理をするとなると大変です。そしてまだ増えるでしょうし。

そこで、最初に考えたのがPHPスクリプトの暗号化というか難読化です。
もし同じことを考えている人がいれば参考になるかと思い、PHPスクリプトの暗号化と難読化についてお話します。

結論から書いてしまうと、ワードプレスプラグイン開発で、PHPスクリプトの暗号化は無理でした。
やろうと思えばできるんですが、手間が掛かり過ぎるんですね。
PHPスクリプトの暗号化というのは実は難読化のことです。ソースコードを読み辛くしてこんな読み辛いものを解読するくらいならば、お金を出して買ったほうがマシと思わせるのが狙いです。

例えばコメントや改行、インデントを全て削除し、変数名を意味のない短縮形にすることでソースコードを読み辛くしてしまいます。
しかし、実際は機能している以上、人間が読み辛いだけでコードとしては正しいため、開発系のツールで解読ができてしまうのも事実です。

例えばAptana Studioという無料ツールではPHPの関数の呼び出し元を簡単に辿れます。

▼Aptana Studio

よく分からない関数も呼び出し元をたどる事でなにをしているか想像がつく、というわけですね。
そして、Doxygenという無料ソフトはソースコードから仕様書というかドキュメントを自動で作ってくれる便利なツールです。
PHP、C#、C++、C、Java、Objective-C、Python、VHDLのソースコードから関数表だとか、クラス系統図を作ってくれます。無料なのがすごいですね。

▼Doxygen

Doxygen は、C++、C、Java、Objective-C、Python、IDL (Corba、Microsoft 風) 向けのドキュメンテーションシステムです。 PHP、C

プログラム素人にはたださえ難読かもしれないソースコードでも、コピーする気満々の分かる人には分かってしまう、という弱点があります。クライアントに納品する際に、クライアントにソースコードを盗まれないようにする、という用途には向いているかもしれません。
しかし、一般的に配布用には適さないんですね。

とは言いつつも、現在PHPスクリプトを暗号化できるソフトをいくつか紹介します。

▼php-compressor(無料)

ダウンロードファイル一覧 - PHPCompressor - auto decompressor file #osdn

▼プランセスSPHP(有料)

▼CODELOCK V2(シェアウェア)

CodeLock は、簡単につかえて、経済的な価格の PHP と HTML のソースコードの暗合化ツールです

▼ibLind(有料)

ibLind PHPソースコード難読化

▼ionCube PHP Encoder(有料)

Webプログラミング言語であるPHP。アシアルでは創業以来、ずっとPHPに着目し、ノウハウを積んできました。HTML5を利用したスマートフォンアプリ開発にも取り組んでいます。豊富な

無料のものが「php-compressor」しかないですが、これはcssやjavascriptのインデントや改行、コメントなどが削除され、圧縮されたmin版と同じようなものを作ってくれます。
なので自動成形用のエディタなんかに通すと見やすく復元されてしまいます。

プランセスSPHPはeval()関数を使った難読化処理をしています。こちらの場合は一旦コードを暗号化した後にデコードしてeval()関数で実行しているため、わざとコード内でエラーを発生させたり、eval関数をecho関数に置き換えると読むことが出来てしまいす。

一番最高値の「ionCube PHP Encoder」はサーバー側にエンコーダーソフトをインストールして、PHPのソースコードを外に漏らさない作りになっているためかなり強固です。しかし、サーバー側にエンコーダーソフトをインストールできないとダメです。
レンタルサーバーではダメでしょうね。あと価格が10万以上します。
「ionCube PHP Encoder」がおそらく最強なのですが、現実的ではありません。

また最大の問題はワードプレスプラグイン用としてはどれも対応していないことです。
オリジナルのPHPスクリプトであればいいんですが、ワードプレスプラグインは特殊なので普通に暗号化するとプラグインとして認識されないんですね。

あれこれ試しているうちに丸2日ほど無駄にしてしまいました(涙)
そこでどうすればいいかと私なりに考えました。

関連記事