ソースを外部ファイル化する(CGI編)BIGLOBEのおすすめ光ファイバー「BIGLOBE光 with フレッツ」 今なら入会した方全員に無線LANルータを無料で提供中。
外部ファイルをCGIで作成したサンプルをこちらに準備しました。
通常、CGIを作成する際に、print関数でHTMLを出力する際は、呪文のごとく、
あれは、HTMLファイルを出力しているからそう書くのであって、もしGIF画像ファイルならば、
同様にして、JSファイルならば、
実際にjs.cgiの中身を見ながら解説しましょう。
このサンプルのHTMLファイル(jscgi_sample.html)では、ソースを見てもらえれば分かりますように、get_message関数でメッセージを取得し、document.writeしているわけです。そして、このget_message関数はjs.cgiで定義されていますが、refererのチェックがあるために、get_message関数の戻り値である$strにどのようなタグが書かれているのかが分かりにくくなっています。 ただソースを読んでもらえれば分かりますように、Mac版IE5では正規のHTMLファイルからjs.cgiを要求していても、refererを返しません。そのため"無実の善良なる?"ユーザーをはじかないためにも、チェックをはずさざるを得ません。refererのチェックがありませんので、Mac版IE5でjs.cgiのURLにアクセスすると、
もし、Windows版IEでrefererのチェックを行っていなければ、js.js(拡張子に注目してください。cgiではなく、Mimeヘッダーを尊重してjsファイルとして認識されています。)としてダウンロードされ、中身は一緒です。 【広告】セルライト対策にターボセル 【広告】格安ノートパソコン 【広告】ゾンビ打 THE TYPING OF THE DEAD ネットスケープではRefererチェックを行っていませんが、幸いなことに4.Xではjs.cgiのURLを直接たたいてもダウンロードされません(ネットスケープ6.xではwinではダウンロード画面が表示されました。ネットスケープ7.xでは、Windows版でもMac版でもソースがそのままブラウザに表示されました。refererのチェックを入れるとjavascriptが動かなくなりますのでいたし方ありません)。ネスケ4.Xでは、拡張子が通常の.jsでも.cssでも表示されません。これらはブラウザの表示の対象外なのかな? よく分かりませんが、とにかく私のテスト環境ではダウンロード画面にはなりませんでした。 ということはMac版IE、ネスケ6.xや7.x(win、mac)以外のブラウザからはソースを隠すことが完全に可能なのでしょうか? いいえ、そのようなことはありません。実は、referer(リンク元)というのは、ユーザー側の方で簡単に設定が可能なのです。本当はブラウザにURLを直接たたいても、あたかもrefererはHTMLファイルであるかのようにすることが可能なのです。しかも、アングラソフトなどではなく、vectorなどでも入手できる正規のproxy設定ソフトなどで可能です。
ですから、refererのチェックでダウンロードを制御するやり方は、善意のユーザーを犠牲にする可能性があるため、その点は十分に考慮して採用不採用を決めるべきだと思います。 そもそも、refererをチェックしてダウンロードされるのを防ぐなどの作業が必要になってくるのは、jscgi_sample.htmlのソース自体が見られてしまうことに根本原因があります。jscgi_sample.htmlのソースが見られてしまうから外部ファイルのファイル名(ここではjs.cgi)が漏れ、さらにjs.cgiに書かれたJavascriptのソースも入手されてしまうのです。このjscgi_sample.htmlのソース自体を見せないようにする(難しくする)方法をこれから紹介していきます。まずは、「右クリックを禁止する(カスタマイズメニューの表示)」です。
--------------------------------------------------------------------------
--------------------------------------------------------------------------
連絡先:info@broadband-xp.com (免責事項)このホームページの内容に起因する如何なるトラブルに対しても責任を持ちえません。必ず自己責任でご利用ください。 |