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