2

Webアプリケーションに安全なJavascriptコードを含めることは可能ですか?安全とは、サーバーにアクセス許可を照会したり、クライアントが変更できない操作を実行したりできることを意味しますか ?

例:

    var flag = 0;

    $.ajax({
        async: false,
        url: "/check_permission_script.php",
        success: function(data){
            flag = parseInt(data);
        }
    });

    if (flag != 1){
        display_normal_content();
    }else{
        display_secure_content();
    }

ここでは、サーバーにクエリを実行して、ユーザーが安全なコンテンツを表示する権限を持っているかどうかを確認します。権限がある場合はdisplay_secure_content()、安全なコンテンツを表示するために使用し、そうでない場合は、display_normal_content()通常のコンテンツを表示するために使用します。問題は、デバッグ端末を介してflag、クライアントコンピューターで変数== 1を設定するか、display_secure_content()関数を直接呼び出すのが簡単なことです。

この方法で物事を行う私の動機は、ページをリロードすることなく、ajaxを使用して新しいコンテンツを取得する優れたWebアプリを用意することです。ページをリロードする代わりに、これが好きです。

問題は、クライアントの操作に対して安全なJSスクリプトを作成できるかどうかです。それとも、これはWebインフラストラクチャの性質上不可能ですか?

ありがとう!!

4

5 に答える 5

2

JavaScriptの性質上、これは不可能です。

クライアントに見られたくないものは、クライアントに送信できません。すべての認証/承認はサーバー側で行う必要があります。

インターフェースにデータをロードするためにAJAXを引き続き使用できますが、機密データが漏洩しないように、サーバー側でチェックが行われていることを確認してください。

于 2012-07-19T13:57:58.557 に答える
1

短い答え、いいえ - JavaScript だけではありません。JavaScript はクライアント側で実行されるため、JavaScript に記述したものはすべてアクセス可能であり、拡張によってクライアントが変更できます。

コードの難読化など、「あいまいさによるセキュリティ」を支援するツールがいくつかありますが、これは最終目標には役立ちません。

現在の設定を考えると、Ajax を介して、すべてのセキュリティ/検証を処理し、表示するコンテンツを返すサーバー側の PHP ページに接続することが役立ちます。これを行うと、クライアント向けの JavaScript は「要求」する機能のみを持ち、表示するものを検証または選択することはできません。

于 2012-07-19T13:59:44.630 に答える
1

内部データベースに対してセッション ID を照会し、データのブロブを復号化するためのキーを含む安全な公開/秘密キー暗号化トークンを返すことができます。次に、これを javascript 関数のパラメーターとして使用します。この関数は、返されたキーを使用して BLOB を復号化します。

このソリューションでは、ページをリロードする必要はありません。理論上は機能しますが、毎回異なるキーで暗号化された安全なコンテンツを含むページを返す必要があります。これを実際に試すことはお勧めしません。

于 2012-07-19T14:00:17.930 に答える
1

サーバーは、ユーザーが表示できるものと表示できないものを認識している必要があります。クライアントでフラグが変更された場合、サーバーはそれを信頼せず、リクエストを受け取ったときに検証を行う必要があります。セキュリティの 101 項目

于 2012-07-19T14:01:49.633 に答える
0

JavaScriptはクライアント側のスクリプト言語です。それはこのように意図されています。

安全なスクリプトが必要な場合は、PHPを使用してください。

于 2012-07-19T13:58:14.577 に答える