Qualys工程總監:HTML5強大功能背后的安全陷阱
云安全公司Qualys工程總監邁克•施瑪(Mike Shema)發表評論文章稱,盡管HTML5使網站的功能更為強大,但開發人員需充分利用其新的技術特征來提高網站的安全性。HTML5允許瀏覽器存儲更多的數據并改進了cookie功能,但如果使用不當反而會帶來安全和隱私問題。
以下為原文:
HTML5技術的出現使得過去20多年一直驅動web內容的技術煥發了新的活力。值得一提的是,當前主流瀏覽器仍然可以呈現絕大部分20多年前的使用較老web技術的網站,不過現在的網站都希望瀏覽器的功能較以往更加強大。Facebook就嘗試通過使用一個純HTML5移動應用程序來推動這些計算邊界進一步發展,但發現數十億用戶使它受到了一些限制。
新的技術標準同樣帶來了安全問題,網站不會因為僅僅在頁面增加一句定義聲明就會立即得到優化。相反,通過采用新的技術特征可以提高網站的安全性,這些特征主要是指包括控制瀏覽器如何與不同的信息來源共享資源以及交互內容,其他特征還包括允許瀏覽器存儲更多的數據、Cookie性能的優化等,不過如果對這些新特性使用不當,反而會帶來相應的安全和隱私方面的隱患。
跨源資源共享
瀏覽器的安全性絕大部分依仗的是SOP(Same Origin Policy),即同源策略,指一個域的文檔或腳本,不能獲取或修改另一個域的文檔的屬性,也就是AJAX不能跨域訪問。Web資源訪問的根本策略都是建立在SOP上的,這使得后來制訂出很多跨域方案,比如JSONP。
跨源資源共享(CORS),它定義了一種瀏覽器和服務器交互的方式來確定是否允許跨域請求。它有更大的靈活性,但比起簡單地允許所有這些的要求來說更加安全。應用CORS的系統目前包括Face.com、谷歌云存儲API等,主要是為開放平臺向第三方提供訪問的能力。
CORS非常有用,可以共享許多內容,不過這里存在風險。因為它完全是一個盲目的協議,只是通過HTTP頭來控制。它的風險包括:無法保證HTTP頭的真實性、惡意跨域請求、內部信息泄漏、針對用戶的攻擊等等。
CORS有多種方法定義一個可靠聲明的持續時間、瀏覽器跨域訪問時應該包含的方法和字頭等。因此務必使這些網站正常工作的必須值保持為最小,而不是對所有的瀏覽器都開放。
iFrame沙箱
iFrame沙箱采用了一種完全不同的策略用以控制瀏覽器如何信任網站內容,盡管仍然用于瀏覽器內部的安全性方面,iFrame的重點已經逐漸從共享內容轉移到限制內容的執行能力,sandbox屬性可以防止不信任的Web頁面執行某些操作,包括:訪問父頁面的DOM、執行腳本文件、通過腳本嵌入自己的表單或是操縱表單、對cookie、本地存儲或本地SQL數據庫的讀寫、禁用插件、禁止其他瀏覽上下文的導航、禁止彈出窗口和模式對話框等。
iFrame因安全問題而臭名昭著,這主要是因為iFrame常常被用于嵌入第三方內容,而后者則可能會執行某些惡意操作。sandbox通過限制被嵌入內容所允許的操作而提升iFrame的安全性,這種方式將沙箱內容與父頁面進行了分離,因此限制了被嵌入內容的權限,不過這并不意味著用戶不再需要檢測數據以防止潛在的攻擊。
基于瀏覽器的存儲
新時代總會帶來新的關鍵詞,“大數據”恐怕是當下最流行的,Web應用的發展,使得客戶端存儲獲得了越來越多的使用,而實現客戶端存儲的方式則是多種多樣。最簡單而且兼容性最佳的方案是Cookie,但是作為真正的客戶端存儲,Cookie則存在很多致命傷。此外,在IE6及以上版本中還可以使用 user Data Behavior、在Firefox下可以使用global Storage、在有Flash插件的環境中可以使用Flash Local Storage,但是這幾種方式都存在兼容性方面的局限性,因此真正使用起來并不理想。
HTML5中給出了更加理想的解決方案:通過提供本地存儲和Indexed數據庫等API接口使得web應用可以在瀏覽器中存儲大量數據;因此安全性不僅涉及到存儲的數據,同時也涉及到訪問方式。因此本地存儲對于緩存內容和保存不敏感用戶數據來說是一個絕佳的選擇,不過保存密碼、信用卡號或者其它需要安全加密的數據則效果不佳。
基于瀏覽器的存儲增加了應用程序收集和操作數據的靈活性,只需將處理器中待操作的任務從服務器轉移到瀏覽器即可,但是并不能轉移安全性的需求。
瀏覽器處處充滿危險,當使用HTML5時務必要時刻謹記,HTML5的新特性或許可以讓你的數據在瀏覽器中更加安全,但是一旦在服務器和數據庫中傳輸時,你需要多加小心。(MK)