不能得到简单的ADsafe小部件的工作

Can't get simple ADsafe widget to work

本文关键字:小部 工作 ADsafe 不能 简单      更新时间:2023-09-26

我正在尝试使用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沙盒应该如何工作吗?

据我所知,ADsafe实际上并没有检查您的代码是否存在这些违规行为。在使用JSLint之前,你应该使用ADsafe选项来解析任何不受信任的JavaScript,并验证没有违反ADsafe。

如果有人说错了,请纠正我。

代码位于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>