前端向後端提交密碼等敏感信息時先做編碼再提交


後端有處理密碼的加密算法,僅僅在前端處理和後端filter層處理,不改變原有的加密的邏輯(場景比較特殊)

解決方案

  • 在配置文件配置需要加密解密的url和parameter
  • 自定義filter,攔截到需要解密的url,dofilter
  • 定義HttpRequestWrapper,處理解密
  • filterChain(HttpRequestWrapper, response);

參考文檔

https://stackoverflow.com/questions/681263/modify-httpservletrequest-body

https://stackoverflow.com/questions/50932518/how-to-modify-request-body-before-reaching-controller-in-spring-boot

踩的坑

  • @RequestParam 和 @RequestBody 區別,以及HttpRequestWrapper分別需要@Override的方法
    • @RequestParam :@getParameter @getParameterValues @getParameterMap
    • @RequestBody : @getReader @getInputStream
  • spring security自定義filter重複執行問題

https://segmentfault.com/a/1190000012173419

  • ServletRequest中getReader()和getInputStream()只能調用一次

https://www.cnblogs.com/zj0208/p/6214576.html

需要修改的點

  • 配置文件配置屬性的分隔符 (url 之間用分號間隔,param之間用逗號間隔)
  • url 和 url/ 的匹配 (檢測最後爲/,直接刪除)
  • ……

延伸和適配性

  • 加密和機密算法的可配置

代碼暫時沒有,我把相關的代碼提取出來會放到這裏

https://github.com/yemaozi5518/SpringBootEncryption/blob/master/README.md

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章