WEB安全之瀏覽器安全機制

WEB 安全是互聯網時代重點關注的問題,也是產品設計中必須考慮的一部分。做爲一個開發人員,有義務和責任打造安全可靠的 WEB 應用供用戶使用,保證用戶數據的機密性,完整性以及服務的可用性。

瀏覽器的同源策略

瀏覽器以協議頭、域名、端口的組合標識一個頁面的源。兩個頁面訪問的協議頭、域名及端口都相同,稱兩個頁面具備相同的源。
下表列出與http://store.company.com/dir/page.html進行同源檢測的結果:html

頁面地址 檢測結果 緣由
http://store.company.com/dir2... 成功
http://store.company.com/dir/... 成功
https://store.company.com/sec... 失敗 協議差別(https/http)
http://store.company.com:81/dir/etc.html 失敗 端口差別(81/80)
http://news.company.com/dir/o... 失敗 子域名差別(news/store)

同源策略下的資源訪問

跨源頁面之間使用 XMLHttpRequest 和 Fetch API 請求數據,經過<img>,<link><script>等 HTML 標籤引用資源,這裏統稱爲資源訪問,都將受到瀏覽器的同源策略的控制。跨源資源訪問時,不一樣的交互方式默認有不一樣的瀏覽器限制:ajax

  • 跨域寫,例如表單數據提交至其餘源,瀏覽器默認容許。
  • 跨域嵌入,例如<img src="..." />,<iframe src="..."/><script src="..." />等標籤引入其餘源資源,瀏覽器默認是容許的。
  • 跨域讀,例如經過 ajax 請求獲取其餘源返回數據,瀏覽器默認是禁止的。

同源策略下的存儲訪問

瀏覽器最初使用 cookie 做爲本地存儲,H5新增 LocalStorage 和 IndexedDB 的存儲方式。
瀏覽器經過檢測 cookie 的 domain 屬性控制源,例若有 cookie: key=hello 的 domain 設爲.jaylin.wanglocal.jaylin.wang,www.jaylin.wang,jaylin.wang都可訪問,有 cookie: key2=world 的 domain 設置爲local.jaylin.wang, 則只有local.jaylin.wang可訪問。cookie 的 httpOnly 屬性可控制cookie只能在服務端讀取。跨域

local.jaylin.wang cookie信息

jaylin.wang cookie信息

LocalStorage 和 IndexedDB 會根據不一樣源相互獨立,數據的寫入和讀取都是針對當前源的存儲,目前瀏覽器沒有提供跨源讀寫的支持。瀏覽器

可改變的同源策略

瀏覽器默認的同源策略機制下,也爲開發者提供了改變的機制,列出經常使用的幾種方式:安全

  • domain setting

在一個頁面中,經過設置 document.domain 的值,能夠將子域名的源設置爲父級域名。cookie

  • CSP(Content Security Policy)

瀏覽器支持經過Content-Security-Policy響應頭限制內容來源,確保加載內容的可信度。這個機制能夠減小 XSS 攻擊,dom

  • CORS(Cross-Origin Resource Sharing)

瀏覽器支持 CORS 配置可信的跨域讀資源,以適應WEB應用擴展的需求。網站

惡意站點檢測機制

用戶在使用瀏覽器瀏覽網頁的過程當中,不乏有惡意網站給用戶帶來潛在的安全問題。常見的惡意網站有如下幾類:spa

  • 欺騙性網站
    欺騙性網站又被稱爲釣魚網站,假裝成合法網站,誘導用戶操做,從而竊取用戶的隱私信息。
  • 攻擊性網站
    網站中包含惡意腳本,可以控制訪問用戶瀏覽器,竊取用戶信息,引導用戶進行高危操做。
  • 惡意軟件
    軟件攜帶病毒,可能致使計算機被攻擊的危險軟件。

瀏覽器一般會維護一份被舉報和惡意網站列表,檢測用戶將要訪問的目標網站存在於站點列表中,則提示警告信息以阻止用戶的繼續訪問。設計

相關文章
相關標籤/搜索