● プロテクトコードの作成について・よくある質問

1.「サーバサイドSHTML」で確かにソースは難読化されましたが、右クリック禁止などは有効にならず、右クリックできます。
「サーバサイドSHTML for PHP」は、「HTMLソース難読化用PHPライブラリ」であり、右クリック禁止などはできません。右クリック禁止・印刷禁止などを実現するためには、弊社の姉妹商品であります「SHTML」を併用していただく必要があります(「サーバサイドSHTML for PHP」ご購入者には「SHTML」を無料で提供させていただきます。)。

SHTMLはWindows用ソフト(***.exe)です。SHTMLは、HTMLソースの難読化及び「右クリック禁止・印刷禁止・テキストのコピー禁止」などのプロテクト機能の両方を備えていますが、HTMLソースの難読化に関していえば、静的なHTMLソースの難読化のみに対応しており、動的なデータの難読化には対応していません。ですから、SHTMLはPHPで動的に生成されるページのHTMLソースの難読化はできません。

ですから、PHPで動的に生成されるページの保護を考えられる場合、「サーバサイドSHTML」と「SHTML」の両方を使っていただく必要があります。前者は、動的なHTMLソースの難読化を担当し、後者は、「右クリック禁止・印刷禁止・テキストのコピー禁止」などのプロテクト機能を実現します。

2. WindowsアプリのSHTMLで、どのようにプロテクトコードを作成しますか? 難読化する文字列が決まっていなければ難読化できないようなのですが、動的に生成されるコンテンツなので、どんな文字列で難読化したらいいのか分かりません。
まず、メニューは「どこでもSHTML」というメニューを使います。「どこでもSHTML」は、ページ内の任意の一部分を難読化するためのメニューです。

そして、難読化する文字列は、実は、何でも良いのです。「<!-- a -->」というコメントタグで十分です。それで難読化し、難読化して出来たソースは基本的に全てJavaScriptですので、それを外部ファイル化して、hogehoge.jsなどとして保存します。そのhogehoge.jsをPHPファイルで出力するHTMLソースの中に混ぜてください。

その上で、PHPファイルで出力するHTMLソースを引数として、サーバサイドSHTMLで提供する関数に渡して、難読化された文字列を受け取ります。それをprintすれば完了です。具体的な方法は、サーバサイドSHTMLの体験版のdocフォルダーの中のdocodemo.htmlをご参照ください。


3.プロテクトコードは外部ファイル化(JSファイル化)していて、難読化されたHTMLソースとは別ファイルということは、仮にJSファイルを読み込まないように、(上級)ユーザーが設定すれば、プロテクトコードを回避できるのではないでしょうか?
はい、確かに特定のブラウザやプラグインによっては、特定のファイル(JSファイルやスタイルシート・Flashなど)を読み込まないように設定することはできますが、そのような方法を知っているユーザーはごく一部です。また、どこでもSHTMLで作成したプロテクトコードが読み込まれていないことを検出した場合、エラーにすることができる設定も準備しています。XMLファイルの設定で可能になっています。詳細は、体験版のマニュアルをご覧ください。

4.プロテクトコードをどこでもSHTMLで作成してみると20KB以上のJSファイルになりました。もっと軽くなりませんか? 転送量が気になります。
JSファイルをPHPファイル経由で読み込むようにし、PHPファイルの中でgzip圧縮転送するようにしてみてください。体験版及び製品版内のsampleフォルダーの中のshow_image_js_gzip.php及びgetjs_gzip.phpがその例になります。もしくは、PHPのマニュアルをご参照ください。概ね、40%程度、転送量を縮小できるようになります。

gzip圧縮転送するようにすると、PHPがHTTPレスポンスヘッダーを見て、自動的に、gzip圧縮転送をサポートしているブラウザかどうかを判別して、gzip圧縮転送をサポートしていないブラウザにはそのままで返しますので、便利です。(現在一般に使用されているブラウザの中で、gzip圧縮転送をサポートしていないブラウザは、Mac・Safariの旧バージョンやMac版IEなど一部のブラウザに限られます。)

なお、JSファイル(プロテクトコード)をgzip圧縮転送をするようにさせますと、JSファイルのキャッシュ対策は利かなくなるのではないかと思います。(JSファイルは、どこでもSHTMLで難読化されているはずですので問題はないと思いますが・・・。)

5.フレームのページにプロテクトコードを入れてみましたが、右クリック禁止になりません。
親フレーム(<frameset>タグを含むページ)にプロテクトコードを入れるのではなく、子フレームにプロテクトコードは入れるようにしてください。

また、iframeタグを使って、別のHTMLファイルやPHPファイルをインクルードしている場合は、そのHTMLファイルやPHPファイルでも、別個に、そのHTMLファイルやPHPファイルからプロテクトコード(JSファイル)を読み込ませてあげる必要があります。

6.Macしか持っていません。プロテクトコードの作成はどのようにすればいいですか?
こちらをご参照ください。


HTMLソース難読化用PHPライブラリ
「サーバサイドSHTML for PHP」
© 株式会社プランセスお問い合わせ