网络广告公司的恐慌 XSS广告终结者(html5新特性)

       人们在平时网络冲浪的时候,有时候会发现当前网站有很多莫名其妙的广告,这些广告会被导向到站外。

       这些广告可能是你安装了一些免费网络软件后强制安装的浏览器插件导致的。

       譬如chrome浏览器:

      

        

        导致google显示如下广告:

        

 

        

 

          Geo Edge插件会向当前页面引入一个脚本,该脚本会将广告的DOM插入到页面任何位置。

 

         插件引入广告植入脚本:

 

       现在html5出了个  Contnt-Security-Policy特性,只要在response里加上该header,任何外来域名的资源(css、image、js)等都被屏蔽掉:

 

我们来个测试如何:

<?php 
header("Content-Security-Policy: default-src 'self' 'unsafe-inline' 'unsafe-eval' http://www.baidu.com");
echo <<< EOT
<!DOCTYPE html>
<html >
<head>
    <script>
    var tfx_to={
        createXMLHttpRequest:function(){
                if (window.XMLHttpRequest)
                    {
                        return new XMLHttpRequest();
                    }
                    else if (window.ActiveXObject)
                    {
                        return new ActiveXObject("Microsoft.XMLHttp");
                    }
        },
        post:function(pt,url,callback,sync){
                    var validateResult = function()  
                    {     
                        if(xt.readyState==4)  
                        {  
                            if(xt.status==200)  
                            {   
                                callback(xt.responseText);  
                            }  
                        }  
                    }
                var xt=this.createXMLHttpRequest();
                xt.onreadystatechange=validateResult;
              xt.open("POST", url, sync);
            xt.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
              xt.send(pt);
        }
     }
     function callback(data){
        
         alert(data);
        
     }
     tfx_to.post(null,"http://www.csdn.net",callback,false);
    </script>
</head>
<body>
    <div id="container" style="width: 1888px;  height: 2890px; margin: 0 auto">aaabbba</div>
</body>
</html>
EOT;
?>

 

header("Content-Security-Policy: default-src 'self' 'unsafe-inline' 'unsafe-eval' http://www.baidu.com");这个header只限制当前Websites的资源域名为百度
而ajax去call的csdn的域名,看浏览器控制台报错:

违反了 内容安全策略,该资源没法加载

支持的浏览器,绿色部分:

 

posted @ 2015-03-25 10:58  liuminghai  阅读(1006)  评论(0编辑  收藏  举报