我正在学习 Caja,但我对“this”-stealing 的概念感到困惑:
Caja 解决的另一个安全漏洞称为“this”窃取——如果对象的客户端可以向对象的状态添加别名“this”的方法,则上述受保护的“this”规则不适用。
然后他们显示以下构造函数:
function Cell(value) {
this.x_ = "secret";
this.value = value;
}
有一个涉及 "x_" 的隐藏泄漏:
以下代码可以使表达式揭示该秘密值:
(new Cell(
function (){
return this.x_;
})).value()
这是如何运作的?为什么会出现这样的问题?我感谢任何提示或建议。