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

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

      • 解决方案
      • 参考文档
      • 踩的坑
    • 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/ 的匹配 (检测最后为/,直接删除)
  • ……

延伸和适配性

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

代码暂时没有,我把相关的代码提取出来会放到这里

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

你可能感兴趣的:(SpringBoot,加密)