前端向後端提交密碼等敏感信息時先做編碼再提交
後端有處理密碼的加密算法,僅僅在前端處理和後端filter層處理,不改變原有的加密的邏輯(場景比較特殊)
解決方案
- 在配置文件配置需要加密解密的url和parameter
- 自定義filter,攔截到需要解密的url,dofilter
- 定義HttpRequestWrapper,處理解密
- filterChain(HttpRequestWrapper, response);
參考文檔
https://stackoverflow.com/questions/681263/modify-httpservletrequest-body
踩的坑
- @RequestParam 和 @RequestBody 區別,以及HttpRequestWrapper分別需要@Override的方法
- @RequestParam :@getParameter @getParameterValues @getParameterMap
- @RequestBody : @getReader @getInputStream
-
spring security自定義filter重複執行問題
需要修改的點
- 配置文件配置屬性的分隔符 (url 之間用分號間隔,param之間用逗號間隔)
- url 和 url/ 的匹配 (檢測最後爲/,直接刪除)
- ……
延伸和適配性
- 加密和機密算法的可配置
代碼暫時沒有,我把相關的代碼提取出來會放到這裏
https://github.com/yemaozi5518/SpringBootEncryption/blob/master/README.md