以下是在Java Server端防範XSS(Cross-Site Scripting)跨站腳本攻擊的基本措施。
在Web App的Controller端接收頁面傳入的參數都必須做好下列防範。
- 所有參數都必須做格式驗證,檢查是否為預期輸入的格式,例如長度是否超過限制,姓名欄位是否全是中文等。
- 所有參數都必須做URL encode將URL的保留字取代掉。
- 所有參數都必須做HTML encode將HTML的特殊符號取代掉。
- 所有參數都必須做JSON encode將JSON的特殊符號取代掉。
- 所有參數都檢查是否存在"script"字樣,如果有將其取代掉。
在看了XSS (Cross-Site Scripting) 跨站腳本攻擊簡介和實作這篇文章後,我也深信
任何在Client端的防禦都是無效的。所以在前端頁面的輸入驗證都只是防止一般人而已,駭客仍可透過開發工具,url或特殊編碼的內容來繞過前端的防禦,因此後端的防禦是必要的。
當然以上只是基本的防護而已,還有一大串其他的攻擊方式,請參考XSS (Cross Site Scripting) Prevention Cheat Sheet
參考:
沒有留言:
張貼留言