「苦労して作った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」で判定する方法であるが、簡単に外部ファイルを読むことができる。
ということで「安易な方法では完全にブロックすることなどできなかった」という単なる実験で終わってしまった。