ソースを見られないようにするテクニックの応用編
------
Javascriptの知識が全くない方でも利用可能なように設計されています。最短ステップの場合、暗号化したいソースを貼り付けて、「暗号化する」ボタンをクリックするだけです!!
右クリック禁止+ソースの暗号化+印刷禁止+テキスト選択禁止・・・が今までにないほど簡単に!!
あるいは全く別の利用法として、このクイズをJavaScriptのプログラマーの採用試験に利用するとか。IT技術者は不足していますが、私も経験がありますが、「○○ができます」と職務経歴書や履歴書に書いてあっても、採用した後、「どこが?」と首を傾げてしまうことがしばしばありました。ソースの中に連絡先・連絡手段を書いておき、それを解読できたものだけが面接に挑むことができるというのはどうでしょうか?
また、「専用ソフトで暗号化する」の項目で説明しましたように、私どもで開発したHTMLソース暗号化ソフト「SHTML」の体験版では、クレジット(広告)が表示されるようにしています。しかし、この広告を外そうにも暗号化されているために、どのように外せばいいのか、大概の人には分かりません。分かるぐらいなら、このソフトを買わないでしょうけど。
もし、あなたがJavaScriptやVBScriptを用いたソースをフリーで配布する代わりに、クレジットとして自分のサイトへのリンクや広告画像の表示をお願いしているとしても、今までは「お願いベース」でしかありえませんでした。強いて言えば、配布先リストを巡回し不正が行われていないかかぎ回るしかありませんでした。しかし、あなたのプログラムと広告タグをセットにして暗号化しておけば、広告だけを除いてプログラムだけを使うことを難しくすることもできるでしょう。
よく似た例として、アクセスログなどのプログラムを提供する代わりに広告を表示してもらうシステムで広告画像のサイズを簡単に1×1に書き換えて非表示にするような姑息な手を防止するのに役立つはずです。
さらに、「なぜ隠さなければならないのか」の項目でも説明しましたが、セキュリティ的な意味で「hiddenで渡している値」などが余りにも あからさまに 見えていると、危険率は上昇しますので、そのような意味でもソースを隠すことは意味があります。セキュリティな観点でソースを隠す意義を調べるサンプルをこちらに準備しています。サーバ上で動的に作成したコンテンツを予め定めたアルゴリズムで暗号化し(この場合、暗号化プロセスそのものは、PHPなどのサーバサイドプログラミングで行い、動的にJavascriptを生成する必要があるでしょう。)、ブラウザはjavascriptを解釈することで、人間が理解できる、意図した通りの表示をさせるというような芸当も可能です。
また、暗号化によって、簡易な認証を実現することが可能かもしれません。パスワード認証です。通常、Javascriptによる認証の場合、パスワードを何らかの形でソースの中に書かなければなりません。パスワードそのものを書かないやり方であっても、認証のアルゴリズムそのものをJavascriptで書かなければなりません。しかし、認証のアルゴリズムそのものを暗号化しておけば、ある程度の強度は保てるはずです。もちろん、.htaccessを使った認証には到底及ばないはずですが・・・。私どもで開発したHTML暗号化ソフト「SHTML」でも実際に利用可能にしている。もし、宜しかったら体験版が利用可能ですから御確認ください。また、SHTMLで作成した簡易認証のサンプルをこちらに準備しました(パスワードは「testpass」に設定してあります。本当はもっと分かりにくいパスワードにすべきですが、サンプルのため便宜上このようにしています。)。
【広告】HTMLソース難読化用PHPライブラリ「サーバサイドSHTML」 【広告】ディズニーの英語システムなど英語教材比較
もちろん、画像ファイルをCGIから読み出し(画像ファイル自体はDOCUMENT_ROOTの外に置いておくか、もしくは適当なフォルダーに格納した上で、.htaccessで直アクセスは禁止しておくとbest)、キャッシュファイルが残らないように、HTTPヘッダーをプログラム内で出力するとキャッシュにも残らないようにできますが、ここでは、そこまでのことはやっていません。
ここでは、一枚の画像を20分割ぐらいにして、tableタグで一枚の画像に復元するようにしておきました。右クリックで仮に保存できたとしても、20個全部で「右クリックで保存」を繰り返さなければなりませんし(ダウンロード支援ソフトを使えば別ですが・・・)、ばらばらの20の画像がいくら手元にあっても元の1枚の画像に復元できないと再利用が難しいでしょう。さらにソース自体を暗号化させれば、(キャッシュ対策をしていない場合でも)キャッシュファイルにある20ものパズルのピースのようなものをどのようにつなげて良いか分かりません(20に分割したファイルに連番を振っている場合はばれやすいです)。また、Windows版IE5以上のみが対象ですが、PrtScrされないように、JavaScriptで制御しておいたとしたらどうでしょう? 画像に透かしなどを入れなくてもある程度は守ることが可能になります。
画像をプロテクトするためのサンプル(ポップアップ・ブロック機能が働いて、別ウインドウが開かない場合があります。その場合は、リンククリック後に表示される確認メッセージに対してOKボタンを押す際に、Ctrlキーを押しながらOKボタンをクリックしてください。PrtScr機能を無効にさせるために、クリップボードの中身を一定間隔で空っぽにするスクリプト<Windows版IEで動作>が含まれています。クリップボードに重要なデータがある場合は、予めクリップボードの中身を他の場所に移動させてください。)をこちらにアップしてみました。javascriptの部分を外部ファイル化すればさらに防御は固くなるでしょう。さらに外部ファイルを直接はダウンロードできないようにしたり、キャッシュファイルに残さないようにしてしまえば(外部ファイルをキャッシュに残さないようにするための方法はこちら)、画像をコピーしようにもパズルのように並び方を想像しないと復元できないはずです。
このようにHTMLソースを隠すことにより、いろいろなメリットはあると思われます。最後に、これまで述べてきたことをまとめてみましょう。結論へ
連絡先:info@broadband-xp.com (免責事項)このホームページの内容に起因する如何なるトラブルに対しても責任を持ちえません。必ず自己責任でご利用ください。 |