我正在尝试使用Douglas Crockford的ADsafe库。
我认为它应该限制可以使用的JavaScript,但它似乎允许危险的调用,例如eval()
。
以下是沙箱不限制任何内容的示例:
<html>
<head>
<title>ADsafe Widget Template</title>
</head>
<body>
<script src="adsafe.js"></script>
<div id="WIDGET_">
<script>
ADSAFE.go("WIDGET_", function (dom, lib) {
"use strict";
//
// ADsafe is allowing these to execute!!
//
window.alert("window.alert is working :(");
eval('window.alert("hello from eval")');
window.location = "http://www.google.com";
});
</script>
</div>
</body>
</html>
有人知道ADsafe沙箱应该如何工作吗?
答案 0 :(得分:3)
据我所知,ADsafe实际上并未检查您的代码是否存在这些违规行为。在使用ADsafe选项之前,您需要使用JSLint来解析任何不受信任的JavaScript并验证没有ADsafe违规。
任何人,如果这是错误的,请纠正我。
答案 1 :(得分:1)
代码在div
内,因此代码在div完全加载之前执行,在这种情况下显然不起作用。在div
工作之外和之后移动脚本:http://jsfiddle.net/pimvdb/dFQQa/。
<html>
<head>
<title>ADsafe Widget Template</title>
</head>
<body>
<script src="adsafe.js"></script>
<div id="WIDGET_"></div>
<!-- div has been ended and fully loadede by now -->
<script>
ADSAFE.go("WIDGET_", function (dom, lib) {
"use strict";
//
// ADsafe is allowing these to execute!!
//
window.alert("window alert is working :(");
eval('window.alert("hello from eval")');
window.location = "http://www.google.com";
});
</script>
</body>
</html>