次の関数が 'this'要素を設定して配列セルをフェッチする方法を知りたいですか?お願いします。JavaScriptセキュリティの問題
//my secure code
var priv = ['item-0','item-1'];
var api = {push: function(x){priv.push(x)}}
api.store = function(i,x){priv[i] = x}
//the attaker script
var result;
api.store('push',function(){result = this[0]});
api.push();
//the result is cell 0 of private array
//how?
//if i change the 'push' parameter then the result is empty!
document.write(result)
'this'キーワードは、文脈によって異なる意味を持つかもしれません。 'result'変数はどこにも宣言していないので、デフォルトではグローバルスコープを持っています。そのため、関数の外で利用できるようになります。あなたの問題の詳細を教えてください。 – CROSP
@クリスプ私はいくつかの重要なコンテンツを持っています。私はそれらを安全に保ちたいと思います。 私の友人の1人が私にこのコードを送ってきました。私は彼が私のAPIオブジェクトを使ってプライベート変数にアクセスできることを知っています。 – easa
@easa攻撃者が同じ環境で任意のコードを実行できる場合は、通常、すでに失われています。あなたは何を正確に保護しようとしていますか? – Bergi