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