7

誰かがJavascriptを挿入して変数を操作したり、関数にアクセスしたりするのを防ぐ、または十分に困難にする方法はありますか?私が考えたのは、リロードのたびにすべての変数名をランダムに変更して、マルウェアスクリプトを毎回書き直す必要があるようにすることでしたか?それとも、他に痛みの少ない方法がありますか?

最終的に誰かが侵入することは理解していますが、誰もが使用できるブックマークレットなどを公開しないように、アクションの再現を困難にする方法を知りたいと思います。専門家がコードに自分の道を見つけてもかまいませんが、それよりも少し複雑にしたいと思いますjavascript:d=0;

Javascriptのハッキングをもう少し難しくする方法を知っているなら、それらを書いてください。

4

4 に答える 4

23

JavaScriptが「操作」されることを受け入れ、サーバー側でプロビジョニングを行います。人々がクライアントをいじくり回すのを止めるためにできることは基本的に何もありません。

于 2010-07-07T12:30:18.503 に答える
12

自己実行関数でプライベート メソッドと変数のみを使用するように JS を作成できます。たとえば、次のコードは、誰でも操作できるように、グローバル名前空間にそれ自体の兆候を残しません。

(function(){
    var x = 1;
    var y = 2;
    var z = "A am z";
    var clickHandler = function() {
        alert('You clicked the body');
    };
    document.getElementsByTagName('body')[0].addEventListener('click',clickHandler,true);
}());

[編集] 上記のコードは、使用しているグローバルに利用可能なオブジェクト、メソッド、イベント、またはプロパティ (この場合はdocumentgetElementsByTagNameおよびaddEventListener) をユーザーが上書きする可能性があります。ページが読み込まれ、ユーザーがそれらを上書きする可能性があります。addEventListenerevent とは異なりbody.onclick、関数の外部から削除または上書きできないため、を使用することをお勧めします。

于 2010-07-07T12:43:14.967 に答える
0

本当にクライアントを改ざんしたいユーザーなら誰でもできます。コードは彼のマシンにあります。クライアント側のコードを難読化したとしても、すぐにコードの難読化を解除するのに役立つツールがあります。

ただし、考慮する必要があるのは、サイトをサーバー上で安全にし、他のユーザーにとっても安全にすることです. これは(少なくとも)次のことを意味します。

  1. サーバー上のすべてのリクエストと入力パラメーターをチェック/検証して、ユーザーが作成した「ハッキングされた」クライアント側関数をトリガーしてサーバー側データを変更できないようにします。

  2. ユーザー入力から生成された、画面に出力するすべてのデータを確認します。他のユーザーが、あなたのサイトにとって危険な、特にあなたのサイトの他のユーザーにとって危険なクライアント側のスクリプトを挿入した可能性があります。(.net を使用している場合は、AntiXSS ライブラリを確認してください)

于 2010-07-17T08:08:12.543 に答える
-1

難読化と縮小により、ハッキングがかなり難しくなるはずですが、私はspenderに同意します.

于 2010-07-16T18:47:10.270 に答える