1

私はnodejsとnowjsを使用しています。サーバー上の関数を呼び出している関数の本体の長さを取得し、同じかどうかを確認したい。ユーザーがクライアント側の機能を操作できないようにするため。そして、変更される可能性のある変数を除外する可能性があります。JavaScriptでこれを行う方法はありますか?

例えば

クライアント

now.sendMessage() {
    //Some code...
}

サーバ

everyone.now.sendMessage() {
    //Check that the code is the exact length 
    //as the function body written in the clientside script
    //To see if it has been manipulated...
    if (codelength === ?) {
        //execute code
    } else {
       //return error
    }
}
4

3 に答える 3

3

これを試して:

   var codelength =  (String(yourfunction_name).length);

その知識があれば、関数の本体に対していくつかのハッシュを計算し、それらを比較することもできます。

于 2011-05-17T18:07:38.433 に答える
3

http://jsfiddle.net/RsrCB/1/で実行できます。

しかし実際には、それは信頼できません。JavaScript コードは、いくつかの理由で整合性をチェックできません。

  • 難読化するのは簡単です
  • 整合性チェック コードを簡単にオーバーライドできます
于 2011-05-17T18:05:13.597 に答える
2

あなたの使い方は間違っています。ユーザーを信頼することはできません。

これで、クライアントでプロシージャを定義し、いくつかのデータでそれらを呼び出すだけです。このような機密データを渡すことはありません。

クライアントに送信するデータはすべてクライアントに属し、ハイジャックを防ぐことはできません。

その下で websocket または XHR を使用するようになりました。ソケットでクライアントにデータを送信するだけで、傍受される可能性があります。

于 2011-05-17T18:04:50.773 に答える