SpringBoot|前端向后端提交密码等敏感信息时先做编码再提交


前端向后端提交密码等敏感信息时先做编码再提交

      • 解决方案
      • 参考文档
      • 踩的坑
    • spring security自定义filter重复执行问题
    • ServletRequest中getReader()和getInputStream()只能调用一次
      • 需要修改的点
      • 延伸和适配性
      • 代码暂时没有,我把相关的代码提取出来会放到这里

后端有处理密码的加密算法,仅仅在前端处理和后端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/ 的匹配 (检测最后为/,直接删除)
  • ……
延伸和适配性
  • 加密和机密算法的可配置
代码暂时没有,我把相关的代码提取出来会放到这里
【SpringBoot|前端向后端提交密码等敏感信息时先做编码再提交】https://github.com/yemaozi5518/SpringBootEncryption/blob/master/README.md

    推荐阅读