簡體   English   中英

Spring MVC 驗證控制器中 POST/PUT 方法中的所有參數

[英]Spring MVC Validating all parameters in POST/PUT methods in controllers

我有很多控制器,我想驗證 forms 中提交的所有參數以防止 XSS 攻擊。 相反,分別保護每個 controller 我希望有一個組件作為所有提交的 forms 的攔截器並檢查提交的參數。

我寫了一個過濾器,它使用 antisamy 來校正參數值,但效果太好了。 我的意思是它逃避了一切,甚至是不應該逃避的豐富內容。 使用 Spring MVC 框架https://jeevanpatil.wordpress.com/2011/07/22/prevention_of 清理用戶輸入

因此,我需要一些解決方案來逃避控制器中的具體參數,你知道任何解決方案嗎? 我計划在 controller 中的每個方法中的參數旁邊創建注釋,例如 @XSSEscaped,然后只有那些參數會被轉義。

輸入時的 HTML 編碼可能會損壞數據。 它可能仍然不安全,因為即使使用 HTML 編碼,插入到屬性、樣式表或腳本中的數據仍然可以執行代碼。 它可能不會涵蓋頁面上的所有數據,因為某些值可能不是通過 controller 獲得的,或者從那時起可能已被修改。

有很多方法可以繞過輸入過濾器(請參閱XSS 過濾器規避備忘單)。 例如,鏈接答案中的RequestWrapper過濾掉eval() ,但傳入e<script></script>val() ,然后您再次將eval()設為 output 。 解決這個問題,然后它們就會變成別的東西。

HTML 編碼是視圖層的職責。 在這里,您可以確保頁面上使用的所有數據都針對使用它的上下文進行了適當的編碼。 遵循Cross Site Scripting Prevention Cheatsheet中的規則可以防止 XSS。 默認情況下,像 Thymeleaf 這樣的模板系統將執行 HTML 編碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM