2011-08-23 31 views
0

我正在尝试使用Douglas Crockford的ADsafe库。 我认为它应该限制可以使用的JavaScript,但它似乎是让危险的电话通过,如eval()无法获得简单的ADsafe小部件工作

这里的沙箱不限制任何一个例子:

<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中沙应该如何工作的?

回答

3

据我所知,ADsafe并没有真正检查您的代码是否存在这些违规行为。预计在启用ADsafe选项的情况下使用JSLint,以解析任何不可信的JavaScript并在使用前验证是否没有ADsafe违例。

任何人,如果这是错误的请纠正我。

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> 
+0

感谢您的关注。不幸的是,ADsafe确实希望'脚本'位于'div'内部。如果它在'div'中找不到'script',则会引发错误。 – slattery