人們在平時網絡衝浪的時候,有時候會發現當前網站有不少莫名其妙的廣告,這些廣告會被導向到站外。php
這些廣告多是你安裝了一些免費網絡軟件後強制安裝的瀏覽器插件致使的。css
譬如chrome瀏覽器:html
致使google顯示以下廣告:html5
Geo Edge插件會向當前頁面引入一個腳本,該腳本會將廣告的DOM插入到頁面任何位置。ajax
插件引入廣告植入腳本:chrome
如今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的域名,看瀏覽器控制檯報錯:
違反了 內容安全策略,該資源無法加載
支持的瀏覽器,綠色部分:網絡