用這三種方式可以保護站點不受 XSS 攻擊:
- 執行內部的輸入過濾(有時候稱為輸入清潔設備)。對于內部書寫的每個腳本中的每個用戶輸入 —— 參數或 HTTP 頭,都應該應用高級的
HTML 標簽(包括 JavaScript 代碼)過濾。舉例來說,來自之前的案例研究中的 welcome.cgi 腳本在解碼
name
參數之后,應該過濾<script>
標簽。該方法有一些嚴重的不利因素:
- 執行“輸出過濾”,換句話說,當發回給瀏覽器時過濾用戶數據,而不是當被腳本接收時。一個很好的示例是通過一個腳本將輸入數據插入到數據庫中,然后再從數據庫呈現數據。在這種情況下,重要的是不向原始的輸入字符串應用過濾,而只向輸出版本應用過濾。這種方法的缺陷類似于對輸入過濾的缺陷。
- 通過安裝第三方應用程序防火墻,防火墻在 XSS 攻擊到達 Web 服務器和易受攻擊的腳本之前攔截它們,并阻塞它們。不論是來自內部應用程序的腳本或路徑、第三方腳本,或根本不描述資源的腳本(舉例來說,用來引起來自服務器的 404 頁面響應的腳本),應用程序防火墻都可以以一般的方式覆蓋所有輸入方法(包括路徑和 HTTP 頭)。對于每個輸入源,應用程序防火墻根據各種 HTML 標簽模式和 JavaScript 模式檢查數據。如果匹配成功,就拒絕該請求,惡意的輸入不會到達服務器。
檢查站點免于遭受 XSS 攻擊是加強站點安全保護的必然結論。正如保護站點免于遭受 XSS 攻擊一樣,檢查站點的確安全也可以通過手工完成(硬方法),或利用自動的 Web 應用程序安全漏洞評估工具,它減輕了檢查的負擔。該工具爬遍站點,然后根據嘗試參數、頭,和路徑找到的所有腳本,運行其知道的所有變化。在這兩種方法中,用盡可能多的方式檢查對應用程序的每個輸入(所有腳本的參數、HTTP 頭、路徑)。如果響應頁面包含瀏覽器可以執行的 JavaScript 代碼,那么 XSS 安全漏洞就已顯露出來。舉例來說,發送此文本:
<script>alert(document.cookie)</script> |
對每個腳本的每個參數(通過允許 JavaScript 的瀏覽器暴露出最簡單類型的 XSS 安全漏洞),如果將文本解釋為 JavaScript 代碼,那么瀏覽器將彈出 JavaScript Alert 窗口。當然,還有很多其他情形,因此,只測試這種情形是不夠的。如您已經很了解的話,很可能將 JavaScript 注入請求的各種字段中:參數、HTTP 頭,和路徑。盡管,在一些情況下(特別是 HTTP Referer 頭),很難利用瀏覽器執行攻擊。
跨站腳本攻擊是黑客用來潛入 Web 應用程序的最普遍的應用程序層攻擊之一,并且是最危險的手段之一。它是針對特殊 Web 站點的客戶隱私的攻擊,當客戶詳細信息失竊或受控時可能引發徹底的安全問題。不幸的是,如本文所闡述的,這種攻擊經常在無需了解客戶或被攻擊組織情況的前提下就可以實現。
要防止 Web 站點受到這些惡意行為的攻擊,至關重要的是,組織要實現在線和脫機的安全策略。這包括使用能夠自動化測試出站點中所有普遍的 Web 安全漏洞,和具體應用程序的安全漏洞(例如跨站腳本)的自動化安全漏洞評估工具。對于全面的在線防衛,同樣至關重要的是安裝可以檢測并抵御任何對保存在 Web 服務器上,或其背后的代碼和內容實施控制的防火墻應用程序。
文章來源于領測軟件測試網 http://www.kjueaiud.com/