手把手教你阻止Web應用存儲敏感數據
Michael Cobb是認證信息系統安全架構專家(CISSP-ISSAP),知名的安全作家,具有十多年豐富的IT行業經驗,并且還從事過十六年的金融行業。他是Cobweb Applications公司的創始人兼常務董事,該公司主要提供IT培訓,以及數據安全和分析的支持。Michael還合著過IIS Security一書,并為領先的IT出版物撰寫過無數科技文章。此外,Michael還是微軟認證數據庫系統管理員和微軟認證專家。
在某些情況下,自定義Web應用會保存敏感(專有)數據到用戶的緩存文件夾中。如果不重新架構該應用,使用Sysinternals SDelete的注銷腳本是否可以確保數據完全被刪除且沒有任何可恢復殘留呢?
Michael Cobb:Secure Delete或SDelete是Windows命令行使用程序,它可以用來安全地刪除現有文件以及磁盤未分配部分的文件數據。然而,你并不能使用它來清除遠程用戶設備中的數據;你的Web應用開除的注銷腳本不會被授予權限來運行這種強大的工具,對于Web應用數據保護,這是完全錯誤的工具。還有更有效的方法來確保敏感數據不會被保留在用戶的緩存文件夾中。
瀏覽器保存頁面資源有兩個目的:歷史記錄和緩存。歷史記錄功能允許用戶快速還回以前瀏覽過的頁面,而緩存則用來提高性能。下載的內容(例如標志或博客文章)被存儲在用戶設備的緩存文件夾中,這樣每次用戶觀看內容時就不用重復下載。因緩存或歷史記錄目的而存儲的內容隨后都可以通過查看瀏覽器的緩存或者簡單地按下瀏覽器的“后退”按鈕來查看。這可能讓信用卡信息和用戶名等敏感數據面臨風險。
為了避免這種隱私威脅,我們沒有必要重新設計應用,只需利用數字證書和每個網頁中的一些額外的緩存控制頭域就可以解決緩存信息的問題。首先安裝一個Web服務器證書,并通過HTTPS提供所有內容;這將為應用和用戶之間傳輸的數據提供保密性。由于瀏覽器有不同的默認行為來緩存HTTPS內容,包含敏感信息的頁面應該包括緩存控制頭域,以確保內容不會被緩存。為了涵蓋各種瀏覽器版本,避免內容被緩存的完整頭域應該是:
具體如下:
• 緩存控制“no-store”將防止請求和響應被緩存存儲
• 添加“private”將放置代理服務器緩存頁面
• 通過設置“must-re-validate”,“Back”按鈕不再會顯示敏感數據
• “max-age”選項表明響應被緩存的時間,將其設置為“0”可以防止緩存
現在的瀏覽器往往較少依賴于“Expires”頭域,但為了確保安全性,企業應該將過期時間設置為“0”,以防止較舊瀏覽器的緩存。為了與HTTP/1.0兼容,響應還應該包括“Pragma: no-cache”頭域。“no-transform”對移動用戶很重要,因為有些移動運營商會壓縮或修改內容來節省帶寬。
在部署這些變更后,開發人員應該測試應用不再泄露敏感數據到瀏覽器緩存。對每個主流瀏覽器的緩存文件夾的手動搜索可以確保不會存儲敏感數據。如果發現數據,使用WebScarab等代理服務器來檢查服務器的響應,并檢查包含敏感信息的每個頁面。在這些網頁中,確保服務器正在發送正確的響應頭域,并指示瀏覽器不緩存任何數據。