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