1

JavaScript の保護メモリについて質問があります。次のように関数を実行した場合:

var obj = function(){
    var secret = "secret",
        super_secret = "my super secret string";   
    return {
        get_secret: function() {
            return secret;
        }()
    }
}();

どうにかして super_secret から文字列を取得することは可能ですか?

throw() と Error() を使用して関数から変数を取得するエクスプロイトを見ました。ただし、それは閉鎖では行われませんでした。すべての入力と「勘」は大歓迎です。super_secret 変数を抽出または変更する既知の方法がないことを確認する必要があるプロジェクトを計画しています。

4

3 に答える 3

2

これが最終的にブラウザで実行されると仮定すると、誰かがソースを表示してコピーアンドペーストすることができます (あなたは「どんな手段でも」と言いました:-)。

また、誰かがあなたのサイトで実行する任意の Javascript を取得できる場合、キーの秘密を保持することはあなたの問題を最小限に抑えます。

于 2010-11-03T14:00:26.063 に答える
1

これを行う方法はほとんどありません。最初にページにないサーバーからデータをロードした場合でも、簡単に firebug を開いてデバッグを開始し、値を見つけることができます。セキュリティが必要な場合は、データを公開しないでください。キーはおそらくJavaScriptのどこかにあるため、データを暗号化しても役に立ちません。

問題が何であるかを共有していただければ、より良い解決策を考えることができるかもしれません。Javascript はおそらく最適なオプションではありません。

編集、デバッガーを使用して何でもできます! ここにスクリーンショットがあります 代替テキスト

于 2010-11-03T14:04:18.517 に答える
0

実際にできることは、サーバー側で super_secret を暗号化および復号化することだけです。暗号化されていないデータをクライアントに送信するか、データを復号化する手段をクライアントに提供する場合、クライアントはデータを利用できるため、データが隠されていることに依存するべきではありません。

于 2010-11-03T14:34:46.850 に答える