2011-08-23 54 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