HTML5有效提升iFrame安全性 新增Sandbox屬性
HTML 5將針對(duì)iframe元素增加sandbox屬性,可以防止不信任的Web頁(yè)面執(zhí)行某些操作。HTML 5規(guī)范的編輯Ian Hickson談到了sandbox的好處,它可以防止如下操作:
◆訪問(wèn)父頁(yè)面的DOM(從技術(shù)角度來(lái)說(shuō),這是因?yàn)橄鄬?duì)于父頁(yè)面iframe已經(jīng)成為不同的源了)
◆執(zhí)行腳本
◆通過(guò)腳本嵌入自己的表單或是操縱表單
◆對(duì)cookie、本地存儲(chǔ)或本地SQL數(shù)據(jù)庫(kù)的讀寫(xiě)
HTML 5的修訂歷史頁(yè)面還提到了sandbox的其他特性:
◆禁用插件
◆禁止其他瀏覽上下文的導(dǎo)航
◆禁止彈出窗口和模式對(duì)話框
◆iFrames因安全問(wèn)題而臭名昭著,這主要是因?yàn)閕Frames常常被用于嵌入第三方內(nèi)容,而后者則可能會(huì)執(zhí)行某些惡意操作。
◆sandbox通過(guò)限制被嵌入內(nèi)容所允許的操作而提升iFrames的安全性。這種方式將沙箱內(nèi)容與父頁(yè)面進(jìn)行了分離,因此限制了被嵌入內(nèi)容的權(quán)限。
與sandbox一起出來(lái)的還有其MIME類型:text/html-sandboxed。Hickson說(shuō)到:
#T#text/html-sandboxed MIME類型確保用戶不會(huì)訪問(wèn)到不可信的內(nèi)容。它包含兩部分內(nèi)容:首先,如果用戶直接訪問(wèn)頁(yè)面時(shí),瀏覽器不可以渲染那些具有text/html-sandboxed MIME類型的頁(yè)面。目前所有瀏覽器都支持這一點(diǎn),這些瀏覽器會(huì)下載頁(yè)面的標(biāo)記但不會(huì)渲染頁(yè)面;其次,支持sandbox屬性的瀏覽器需要渲染具有text/html-sandboxed MIME類型的iframes(但會(huì)受到sandbox屬性中所設(shè)定的權(quán)限限制)目前為止,還沒(méi)有瀏覽器實(shí)現(xiàn)這一點(diǎn),Google Chrome也是如此(它會(huì)渲染父頁(yè)面,但卻下載iframe內(nèi)容而非在iframe中對(duì)其進(jìn)行渲染)。因此目前還沒(méi)法使用該項(xiàng)技術(shù),除非Google更新Chrome以支持這一點(diǎn)(從理論上來(lái)說(shuō),其他的瀏覽器廠商在實(shí)現(xiàn)了對(duì)sandbox屬性的支持后就會(huì)實(shí)現(xiàn)該技術(shù),讓我們拭目以待吧)。
目前,只有Google Chrome 4.0使用了sandbox,F(xiàn)irefox、IE8和Safari都還沒(méi)有實(shí)現(xiàn)這一點(diǎn),但相信不久之后這些瀏覽器都會(huì)實(shí)現(xiàn)的。圍繞著HTML 5 <video>元素發(fā)生了很多事情,Google通過(guò)H.264標(biāo)準(zhǔn)對(duì)其進(jìn)行實(shí)現(xiàn),而其他瀏覽器則使用了不同的標(biāo)準(zhǔn)或是干脆還沒(méi)有實(shí)現(xiàn)。但這種情況不會(huì)發(fā)生在這里,因?yàn)槊總€(gè)瀏覽器都可以在內(nèi)部自由決定如何實(shí)現(xiàn)sandbox。但即便是明天所有的主流瀏覽器都采用了sandbox,眾多的開(kāi)發(fā)者和內(nèi)容管理者也不能立刻就使用它,因?yàn)檫€有那么多的遺留瀏覽器會(huì)忽略掉該屬性,因此穩(wěn)妥的辦法還是采取常規(guī)的安全手段來(lái)保護(hù)iFrames。