HTML5安全攻防詳析之完結篇:HTML5對安全的改進
HTML5對舊有的安全策略進行了非常多的補充。
一、iframe沙箱
HTML5為iframe元素增加了sandbox屬性防止不信任的Web頁面執行某些操作,例如訪問父頁面的DOM、執行腳本、訪問本地存儲或者本地數據庫等等。但是這個安全策略又會帶來另外的風險,這很有趣,例如ClickJacking攻擊里阻止JavaScript腳本的運行來繞過JavaScript的防御方式。
二、CSP內容安全策略
XSS通過虛假內容和誘騙點擊來繞過同源策略。 XSS攻擊的核心是利用了瀏覽器無法區分腳本是被第三方注入的,還是真的是你應用程序的一部分。CSP定義了Content-Security-Policy HTTP頭來允許你創建一個可信來源的白名單,使得瀏覽器只執行和渲染來自這些來源的資源,而不是盲目信任服務器提供的所有內容。即使攻擊者可以找到漏洞來注入腳本,但是因為來源不包含在白名單里,因此將不會被執行。
XSS攻擊的原理
三、XSS過濾器
Chrome、Safari這樣的現代瀏覽器也構建了安全防御措施,在前端提供了XSS過濾器。例如http://test.jiangyujie.com/?text=</div><script>alert(1)</script>在Chrome中將無法得到執行,如下圖所示。
四、其他
另外HTML5的應用程序訪問系統資源比Flash更受限制。
最后,關于HTML5專門的安全規范目前還在討論中,有的人希望分散到HTML5規范的各個章節,有的人希望單獨列出,目前沒有單獨的內容,因為不僅要考慮Web App開發者的安全,還要考慮實現HTML5支持的廠商,對它們進行規范和指導。
我個人認為HTML5的安全規范將會有一個統一的章節來進行闡述,并在各個功能模塊相應的提及。