私は Caja について学んでいますが、「これ」を盗むという概念について混乱しています。
Caja が対処するもう 1 つのセキュリティ上の脆弱性は、「this」盗用と呼ばれます。オブジェクトのクライアントがオブジェクトの状態にメソッドを追加して、オブジェクトの「this」に別名を付けることができる場合、前述の保護された「this」ルールは適用されません。
次に、次のコンストラクターを示します。
function Cell(value) {
this.x_ = "secret";
this.value = value;
}
"x_" に関する隠れたリークがあります:
次のコードは、式でその秘密の値を明らかにすることができます。
(new Cell(
function (){
return this.x_;
})).value()
これはどのように作動しますか?なぜそんな問題が?ヒントやアドバイスをいただければ幸いです。