這次項目中遇到一個平時沒有注意的問題,那就是SpringMVC的攔截器。
<mvc:mapping path="/**"/>
這個配置大家應該很熟悉了,這個配置會攔截所有匹配/**的請求,
例如 http://localhost:8080/xx, http://localhost:8080/xx/xx, http://localhost:8080/yy/xx/aa
但是 對於這樣的請求會攔截嗎?http://localhost:8080/xx/ http://localhost:8080/xx/xx/
不會,對於所有以/結尾的請求 他是攔截不到的,那么這樣子對於用戶來說,如果某些用戶惡意發送這樣的請求,可能會引起反射型xss攻擊。
尤其是 當項目引用了velocity技術時, 發送這樣的請求,這樣的請求會經過velocityviewservlet,然后會被catch到找不到資源的異常,
然而這個異常不會被拋出來,而是直接被reponse出頁面上 導致系統里的統一異常處理 不起作用。
那么這樣的請求 我們應該怎么去攔截掉呢?
這邊我選擇了 filter 在filter里面 對於所有"/"結果的請求 做一個非法請求的處理。 解決了這個問題。