プレミアムWebアプリになるjquery、html-cssマークアップを使用してWebアプリを開発しました。だから私はコードのセキュリティが盗まれないようにする必要がありますが、これらはすべてクライアント側であるため、それらを保護するための100%安全な方法はありません。
これらはすべて、窃盗を難しくするのに十分だと思いますか?または私のための提案/アドバイスはありますか?
コードがブラウザに配信されるため、Javascriptが「盗まれる」のを防ぐことはできません。特定のポイントに答えるには:
1.マウスの右クリックボタンを無効にしました
これは、まったく効果がありません。誰も右クリックを使用してコードを盗もうとすることはありません(そう、右クリックでもブラウザ内の何かにアクセスすることはできません)。そのため、「カジュアルな泥棒」を防ぐことはできません。ましてや、実際に自分が何をしているのかを知っている人はもちろんです。
2.コードを縮小して難読化しました。
これは、コードが何をしているのかを正確に理解することをはるかに困難にするため、まともなステップです。ただし、わかりにくい変数名ではありますが、コードを適切に再フォーマットするコード「デミニファイア」がたくさんあります。
3. jsコードを使用して外部jsファイルを追加し、コードを難読化して、誰も外部jsファイルの名前を理解できないようにしました
ブラウザの開発者ツールでキャプチャされた外部ファイルをいつでもロードする場合(Google Chromeの[ネットワーク]タブを確認してください)。したがって、これにより保護が追加されることはありません。
4. jsフォルダーにindex.htmlファイルを作成して、jsフォルダーに誰もアクセスできないようにしました
繰り返しますが、誰もがJSファイルがロードされているのを見ることができるため、これは価値がありません。さらに、「index.html」はフォルダのリスト表示を防ぐためのひどい方法です。サーバー側で実行する必要があります(例:.htaccess
ファイル)。
本当の答え: Javascriptの盗難を防ぐことはできません。コードを簡単に理解することを防ぐために、小さくして難読化しますが、JSの観点からはそれだけです。
ロジックの一部をサーバー側に移動して(そしてアプリでAJAXを使用して)、もちろんユーザーが修正なしでJSを使用できないようにすることができます。サーバー側のロジック自体。
そして最後に、あなたが書くJavascriptコードが既にあなたの財産であり、あなたが著作権を持っていることを忘れないでください。誰かがそれを盗んだ場合、彼らは法律に違反しており、あなたは彼らに対して法的措置を求めることができます。
マウスの右クリックボタンを無効にしました
これをしないでください。
コードを保護する(しない)ことに加えて、ブロックしている右クリックの有効な使用法があります。 絶対に何もしないを実行している間にみんなを困らせるだけで、最初からコードを盗もうとするのを十分に知っている人を止めることができます。
PHPを使用して、ユーザーが(プレミアムサブスクリプションによって)認証された場合にのみJavaScriptをロードします。
I have created a index.html file in the js folder so that none can get access the js folder
ファイル名を推測した場合はどうなりますか? .htaccess
を使用してディレクトリの表示を無効にするには、Options -Indexes
を使用する必要があります。それは絶対確実です。
しかし、私が知っている/書くほとんどのWebアプリケーションは、PHPやASPなどのハイパーテキストプロセッサを使用しています。実際の機能のソースは、セキュリティで保護されたサーバーで実行される場合、完全に閉じられます。誰かが「ソース」をコピーするときに機能しないコピーを取得する場合、CSS/JavaScriptを盗むのを気にしますか?ユニークで革新的なものであれば、著作権や特許を取得することもできます。
。jsを「保護」する3つのオプション:
これにはいくつかの異なる手法を使用できますが、それらのnoneは完全な保護を表すことを理解する必要があります。 (それらは抑止力にすぎません)。
1)ajaxスクリプトインジェクションを使用できます。 XSSを防ぐ同じドメインポリシーにより、クライアント側のスクリプトを他の場所で実行することが困難になるため、これは盗難を阻止します。
2)無料のオンライン難読化ツールを使用してコードを難読化できます。
3) https://domainlockjs.com を使用できます。これにより、コンソールでのトレースが非常に困難になります。
Phpを挿入することで問題を解決しました。それに関する記事を書きました- JavaScriptコードのセキュリティが盗まれないようにする コードスニペットは次のとおりです。
/*
code.js
*/
var temp;
function calculate(){
var a = $('#a').val();
var b = $('#b').val();
/*
var c = 10;
temp = (a + b)/c;
$("#target").html(temp);
*/
//Do above calculation on the server side
var dataString = 'a=' + a + '&b=' + b + '&c=' + c;
$.ajax(function(){
type : "POST",
url : "calculate.php",
data : dataString,
cache: false,
dataType: 'json',
success: function(data){
temp = data.temp;
$("#target").html(temp);
}
});
}
そしてphpスクリプト:
if($_POST){
$a = $_POST['a'];
$b = $_POST['b'];
$c = $_POST['c'];
$temp = ($a + $b)/$c;
$data = array('temp' => $temp);
header('Content-type: application/json');
echo json_encode($data);
}