▼▽ Instant Access Menu ▽▼

 ソースを見られないようにするテクニックの応用編   



パナソニックグループのショッピングサイト「パナセンス」

------
ソースを隠す目的は「ただ単にソース見られないようにしたい」以外の場合もあります。例えば、ソースを隠すことによりクイズを作成することも可能です。回答が絶対に漏れたら困るパスワードのようなものを隠すことには利用できませんが、解かれることを前提にしたクイズであれば、このHTMLソースを隠す手段は結構楽しいはずです。クイズの回答や次の指示を暗号化したコメントタグの中に入れておくというのが一例です。こちらに隠しリンクのページを探すクイズをサンプルで作成してみました。暗号化している場合とそうでない場合とで比較してみてください。

 待望のHTML暗号化ソフト誕生!! 
株式会社プランセスの全面協力の元、HTML暗号化ソフト「SHTML」を2005年7月11日にリリースしました。

Javascriptの知識が全くない方でも利用可能なように設計されています。最短ステップの場合、暗号化したいソースを貼り付けて、「暗号化する」ボタンをクリックするだけです!!

右クリック禁止+ソースの暗号化+印刷禁止+テキスト選択禁止・・・が今までにないほど簡単に!!
(サンプル):
オリジナル: 株式会社プランセスのメインページ

暗号化したページ: こちら

* 画像保護機能を体感してもらうために、敢えて右クリック禁止機能を解除したページ
(右クリックして画像を保存しようとしても無色のダミー画像しか保存できません。)


クイズとは似ていますが、ゲームの場合はどうでしょうか? JavaScriptでも簡単なゲームなら作成可能です。ただ、得点などをサーバにアップさせ得点ランキングなどを行わせるタイプのゲームで、不正が行われないように暗号化するというのであれば、止めておいた方が良いです。ある程度知識があれば不正は可能だからです。そういう意味でもゲームを作成するならばFlashやJavaの方が圧倒的に向いていますね(ただし、最近では、海外製ソフトの中には、ActionScriptをほぼ全て解析してしまうソフトが存在しますので、完全ではありません)。

あるいは全く別の利用法として、このクイズをJavaScriptのプログラマーの採用試験に利用するとか。IT技術者は不足していますが、私も経験がありますが、「○○ができます」と職務経歴書や履歴書に書いてあっても、採用した後、「どこが?」と首を傾げてしまうことがしばしばありました。ソースの中に連絡先・連絡手段を書いておき、それを解読できたものだけが面接に挑むことができるというのはどうでしょうか?

また、「専用ソフトで暗号化する」の項目で説明しましたように、私どもで開発したHTMLソース暗号化ソフト「SHTML」の体験版では、クレジット(広告)が表示されるようにしています。しかし、この広告を外そうにも暗号化されているために、どのように外せばいいのか、大概の人には分かりません。分かるぐらいなら、このソフトを買わないでしょうけど。

もし、あなたがJavaScriptやVBScriptを用いたソースをフリーで配布する代わりに、クレジットとして自分のサイトへのリンクや広告画像の表示をお願いしているとしても、今までは「お願いベース」でしかありえませんでした。強いて言えば、配布先リストを巡回し不正が行われていないかかぎ回るしかありませんでした。しかし、あなたのプログラムと広告タグをセットにして暗号化しておけば、広告だけを除いてプログラムだけを使うことを難しくすることもできるでしょう。

よく似た例として、アクセスログなどのプログラムを提供する代わりに広告を表示してもらうシステムで広告画像のサイズを簡単に1×1に書き換えて非表示にするような姑息な手を防止するのに役立つはずです。

さらに、「なぜ隠さなければならないのか」の項目でも説明しましたが、セキュリティ的な意味で「hiddenで渡している値」などが余りにも あからさまに 見えていると、危険率は上昇しますので、そのような意味でもソースを隠すことは意味があります。セキュリティな観点でソースを隠す意義を調べるサンプルをこちらに準備しています。サーバ上で動的に作成したコンテンツを予め定めたアルゴリズムで暗号化し(この場合、暗号化プロセスそのものは、PHPなどのサーバサイドプログラミングで行い、動的にJavascriptを生成する必要があるでしょう。)、ブラウザはjavascriptを解釈することで、人間が理解できる、意図した通りの表示をさせるというような芸当も可能です。

また、暗号化によって、簡易な認証を実現することが可能かもしれません。パスワード認証です。通常、Javascriptによる認証の場合、パスワードを何らかの形でソースの中に書かなければなりません。パスワードそのものを書かないやり方であっても、認証のアルゴリズムそのものをJavascriptで書かなければなりません。しかし、認証のアルゴリズムそのものを暗号化しておけば、ある程度の強度は保てるはずです。もちろん、.htaccessを使った認証には到底及ばないはずですが・・・。私どもで開発したHTML暗号化ソフト「SHTML」でも実際に利用可能にしている。もし、宜しかったら体験版が利用可能ですから御確認ください。また、SHTMLで作成した簡易認証のサンプルをこちらに準備しました(パスワードは「testpass」に設定してあります。本当はもっと分かりにくいパスワードにすべきですが、サンプルのため便宜上このようにしています。)。


最後に、HTMLソースを見られないようにすることで、画像ファイルを守ることがある程度可能になるはずです。右クリックによるコンテクストメニューの表示を不可能にすることで画像を守ろうとしているサイトもありますが、これでは余りにも不十分です。JavaScriptをoffにすれば右クリックできるからです。JavaScriptがoffの場合は画像を表示しないようにし、さらにJavaScriptをonからoffに切り替える不正を防ぐためにリロードを検知し、offの場合はできるだけ画像を表示させないようにする処置が必要になってくるでしょう(このやり方は、こちらで説明しました。)。また、右クリックを禁止するだけのやり方では、キャッシュファイルには画像は残っていますので、あなたの大切な画像が複製されてしまいます。

【広告】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ソースを隠すことにより、いろいろなメリットはあると思われます。最後に、これまで述べてきたことをまとめてみましょう。結論へ

Back ← |  |  |  |  |  |  | |  | 10 | 11 | 12 |13 | → Next


連絡先:info@broadband-xp.com
(免責事項)このホームページの内容に起因する如何なるトラブルに対しても責任を持ちえません。必ず自己責任でご利用ください。

      【広告】家電品の安さ、品揃えに自信あり!      【広告】ソフトの購入はダウンロード販売が一番安い!!