簡単な答えで良い質問:あなたはできません!
Javascriptはクライアント側のプログラミング言語であるため、クライアントのマシンで動作するため、実際にクライアントから何かを隠すことはできません。
コードを難読化することは良い解決策ですが、それだけでは十分ではありません。難しいことですが、誰かがコードを解読してスクリプトを「盗む」可能性があるからです。
コードを盗まれにくくする方法はいくつかありますが、私が言ったように、防弾はありません。
私の頭から離れて、1つのアイデアは、コードを埋め込んだページの外部からの外部jsファイルへのアクセスを制限することです。
<script type="text/javascript" src="myJs.js"></script>
誰かがブラウザでmyJs.jsファイルにアクセスしようとした場合、スクリプトソースへのアクセスを許可されるべきではありません。
たとえば、ページがphpで記述されている場合、include
関数を介してスクリプトを含め、ソースを返すのが安全
かどうかをスクリプトに判断させることができ
ます。この例では、外部の「js」(phpで記述)が必要です。 )ファイルmyJs.php:
<?php
$URL = $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
if ($URL != "my-domain.com/my-page.php")
die("/\*sry, no acces rights\*/");
?>
// your obfuscated script goes here
それはあなたのメインページmy-page.phpに含まれるでしょう:
<script type="text/javascript">
<?php include "myJs.php"; ?>;
</script>
このように、ブラウザだけがjsファイルの内容を見ることができました。
もう1つの興味深いアイデアは、スクリプトの最後でdomスクリプト要素の内容を削除して、ブラウザーがコードを評価した後、コードが消えるようにすることです。
<script id="erasable" type="text/javascript">
//your code goes here
document.getElementById('erasable').innerHTML = "";
</script>
これらはすべて単純なハックであり、これを十分に強調することはできません。jsコードを完全に保護することはできませんが、コードを「盗もう」としている人を怒らせることはできます。
アップデート:
私は最近、JavaScriptコードを非表示にする方法についてPatrick Weidが書いた非常に興味深い記事に出くわしました。彼は別のアプローチを明らかにしています。つまり、ソースコードを画像にエンコードできます。もちろん、これも防弾ではありませんが、コードを中心に構築できるもう1つのフェンスです。
このアプローチの背後にある考え方は、ほとんどのブラウザがキャンバス要素を使用して画像のピクセル操作を実行できるということです。また、キャンバスピクセルは4つの値(rgba)で表されるため、各ピクセルは0〜255の範囲の値を持つことができます。つまり、すべてのピクセルに文字(実際にはASCIIコード)を格納できるということです。残りのエンコード/デコードは簡単です。
ありがとう、パトリック!