一个 JavaScript 漏洞 - “this”-stealing:
A JavaScript vulnerability - "this"-stealing:
我正在学习Caja,我对"this"的概念感到困惑 - 窃取:
Caja解决的另一个安全漏洞称为"this" 窃取 – 如果对象的客户端可以向对象的 说明其别名"this",然后是上述受保护的"this" 规则不适用。
然后,它们显示以下构造函数:
function Cell(value) {
this.x_ = "secret";
this.value = value;
}
有一个涉及"x_"的隐藏泄漏:
以下代码可以使表达式显示该机密值:
(new Cell(
function (){
return this.x_;
})).value()
这是如何工作的? 为什么会有这样的问题?我感谢任何提示或建议。
简化它:
(new Cell( )).value()
我们正在从 Cell 构造函数创建一个新对象,并立即调用其值方法。当然,价值方法还没有做任何事情,这就是我们下一部分的用武之地:
function (){
return this.x_;
}
这就是我们作为 value
参数传递给构造函数的内容。此函数分配给 Cell 构造函数中的this.value
。
因此,Cell 构造函数现在实际上如下所示:
function Cell(value) {
this.x_ = "secret";
this.value = function (){
return this.x_;
};
}
那么,当您从 Cell 创建一个新对象并调用其value
成员时会发生什么?内部函数返回 Cell 对象的x_
值,从而显示机密文本。
相关文章:
- $(this).prop('property') vs. this.property
- Twitter Bootstrap typeahead:使用“this”获取上下文/调用元素
- 在另一个函数中使用变量this
- this.router在AngularJS 2中未定义
- reactjs this.refs vs document.getElementById
- JavaScript 中的嵌套函数和 “this” 关键字
- React+Meteor:this.ops返回未定义
- javascript中对象构造函数中的var属性与this.properties
- 函数中this和var之间的区别
- jQuery(this).Pparent().Pparente().Prent().find()在iPad上不起作用
- Understanding Javascript scope with "var that = this&qu
- 定义this.properties或objectName.properties的javascript JSON对象
- Object.prototype using 'this'
- 在JavaScript类型的函数中避免self-this
- 如何使用(this)访问Angular 2 http rxjs catch函数中的对象属性
- Javascript 对象和 this 关键字
- jQuery使用ajax自动完成问题-TypeError:this.source不是函数
- reactjs无法将this.pops传递到react图表列表中
- 为什么在这种情况下,“This”确实充当javascript函数中的私有成员
- 一个 JavaScript 漏洞 - “this”-stealing: