外部ファイルを守る?

「苦労して作ったJavaScriptのソースコードをなんとか隠す方法はないものか」と思っている人って結構いるハズ。

「どうぞご自由にお持ち帰りください」の場合のみコピーできるようになっていればいいのに。

「Javascript 外部 隠す」で検索してみたら、「ASP」でやるのが良いらしいという情報があった。

では、さっそく会社のテスト用サーバを使ってチャレンジ。

事例. 外部ファイル「text.js」を隠したい場合

<script type="text/JavaScript" src="/js/text.js"></script>
これを
<script type="text/JavaScript" src="/js/sample.asp"></script>
このようにする。

sample.aspは単独で動くスクリプトだから、ソースを見ようとしても実行されてしまう。仕組み上、実行されてしまうというところがポイント。

つまり正しく呼び出された場合のみ、「text.js」が読まれるようにする。

試した方法。
Request.ServerVariables(“HTTP_REFERER”)
で呼び出し元をチェックする機能を追加する。

チェックして問題が無ければ
fp = Server.MapPath(“/js/text.js”)
Set fso = Server.CreateObject(“Scripting.FileSystemObject”)
Set tso = fso.OpenTextFile(fp,1,FALSE)
Do Until tso.AtEndOfStream
  Response.Write tso.ReadLine
Loop
tso.Close
Set fso = Nothing
これで「text.js」を標準出力する。

これを試してみたところ、なんとなく上手くいっているような雰囲気はしたが、「HTTP_REFERER」の信頼度が低いため実用的ではなかった。

一見良さそうな「HTTP_REFERER」で判定する方法であるが、簡単に外部ファイルを読むことができる。

ということで「安易な方法では完全にブロックすることなどできなかった」という単なる実験で終わってしまった。



関連エントリー