瀏覽器安全以同源策略爲基礎,理解同源策略才能把握客戶端安全本質html
web是創建在同源策略之上的,瀏覽器只是針對同源策略的一種實現java
瀏覽器的同源策略,限制了來自不一樣源的「document」和腳本
web
判斷資源是否同源,如下狀況認爲同源、非同源:ajax
URL | outcome | reason |
http://store.company.com/dir/a.html | 同源 | |
http://store.company.com/dir/b.html | 同源 | |
http://store.company.com:8080/dir/a.html | 非 | 端口號 |
https://store.company.com/dir/a.html | 非 | 協議 |
http://news.company.com/dir/a.html | 非 | 域名(ip) |
影響「源」的因素:host(域名、IP),端口,協議跨域
特別注意:瀏覽器
在a.com中執行以下代碼
安全
<script src="http://b.com/b.js"></script>
試問,b.js的源是誰?答案是a.com服務器
雖然從b.com中加載了b.js,可是b.js是在a.com中運行的,所以對當前打開的界面(a.com),b.js的源是a.com多線程
<script>、<img>、<iframe>、<link>等標籤帶有src屬性,能夠跨域加載資源,不受同源策略限制架構
這些標籤加載時,其實是瀏覽器發起了一個GET請求
不一樣於XMLHttpRequest,經過src加載資源的標籤,瀏覽器限制了JavaScript的權限,使其不能讀、寫返回的內容
好比,經過CDN加載jQuery,就沒法讀寫其返回的內容
XMLHttpRequest對象不能跨域訪問資源,所以在ajax開發中要注意跨域問題
可是近年W3C制定了XMLHttpRequest對象跨域訪問的標準:
經過目標域返回的HTTP頭來受權是否容許跨域訪問【這個跨域訪問方案的基礎是:JavaScript沒法控制HTTP頭】
「掛馬」 :在網頁中插入一段惡意代碼,利用瀏覽器漏洞執行代碼的攻擊方式
Chrome是第一個採起多進程架構的瀏覽器(不是多線程,是多進程);多進程架構講瀏覽器各個功能模塊分開,各個瀏覽器實例分開,當一個進程崩潰時,不會影響到其餘的進程
Chrome主要進程分爲:瀏覽器進程,渲染進程,插件進程,擴展進程。插件進程如:flash,java,pdf等與瀏覽器進程嚴格隔離
SandBox 即沙箱,SandBox泛指「資源隔離模塊」
工做原理:瀏覽器週期性的從服務器端獲取一份最新的惡意網址的黑名單,若是用戶上網的網址在此名單中,瀏覽器給出警告
惡意網站分類:
PhishTank 是免費提供惡意網址黑名單的組織,名單由各地誌願者提供,更新頻繁