2
我学习卡哈,我感到困惑的“本” -stealing概念:一个JavaScript漏洞 - “这个” -stealing:
另一个安全漏洞,卡哈地址被称为“本“ 偷窃 - 如果对象的客户端可以将方法添加到该对象的 状态,该状态的别名为”this“,则上述受保护的”此“ 规则不适用。
然后,他们表现出了下面的构造:
function Cell(value) {
this.x_ = "secret";
this.value = value;
}
有涉及 “X_” 隐藏泄漏:
下面的代码可以使表达揭示秘密值:
(new Cell(
function(){
return this.x_;
})).value()
这是如何工作的?为什么会出现这样的问题?我很欣赏任何提示或建议。
非常感谢Jonathan - 我明白了! JavaScript非常强大! – Coffee 2012-04-28 05:06:48
如果我想成为'x_'的秘密,我将它声明为'var x_ =“secret”;',而不是'this.x_ =“secret”;'。在这种情况下,“攻击”立即停止工作。任何我在一个对象构造函数中绑定到'this'的方法都是*根据定义*不是秘密。我甚至可以用'for .. in'自由地枚举它,而不需要向后弯曲以查看它的值。我不明白 - 所有这一切在哪里? – Tomalak 2012-04-28 05:13:47
@Tomalak我在想我自己。本书中的代码绝对是最好的例子,但是很明显它的意图是什么。 – Sampson 2012-04-28 05:17:55