原文地址: 【BUG】url 参数 AES 加密和解密问题

欢迎访问我的博客: http://blog.duhbb.com/

引言

bug 复盘, 让你少写 bug!

今天分析的是一个 url 参数加密解密的问题, 原因破坏了加密后的字符串导致解密失败.

参数的加密解密

情况描述

url 有个参数是地址, 比如 http://www.hello.com/, 请求这个 url 的时候试图把最后的正斜杠给 trim 掉.

现在有个安全问题需要将这个地址参数给加密, 而加密后的字符串尾部可能出现 /.

所以处理这个问题的时候一定要注意:

  • 加密之前可以 trim
  • 加密之后的字符串不能再 trim 了, 否则加密的结果不完整

同理

  • 解密之前的字符串是不能 trim 的
  • 解密之后的字符串可以 trim 的

为什么一直没有暴露出这个问题呢?

原因是, 加密的盐值是用了日期, 导致 / 的出现是个概率问题, 摸不准那天就触发了这个雷了.

问题原因

如上, 就是因为解密的时候没有判断是否启用了加密, 而先去 trim 然后在解密, 会导致如果加密字符串尾部有 /, 最后解密的加密字符串是不对的.

正斜杠 / 需要转义吗?

Chrome + SpringBoot 测试

?a=/sdfsdf/sdfsf&b=/ 这种组合的话在 Spring 中是可以获取到带 /ab 的值的.

%2F 或者 %2f 的话也可以获取 / 参数, emmmmm.

算了, 不编码了 / 也能凑合用, 所以是 chrome 帮助我们编码了吗?

wget + SpringBoot 测试

wget http://192.168.213.161:8088/xxx/main.htm?a=/adsf/asdfsf/asdfasdf/

也能收到正斜杠 /.

【BUG】url 参数 AES 加密和解密问题相关推荐

  1. openssl 加密解密 指令_openssl命令aes加密和解密

    openssl命令aes加密和解密 日期:2014-11-12 10:41:25 最后更新日期:2017-07-06 10:00:10 [技术] man openssl查看openssl的功能: [c ...

  2. 探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!

    前言 对于数据加密和解密每次我都是从网上拷贝一份,无需有太多了解,由于在.net core中对加密和解密目前全部是统一了接口,只是做具体的实现,由于遇到过问题,所以将打算基本了解下其原理,知其然足矣, ...

  3. Java中的AES加密和解密(CBC模式)

    通过有线方式传输诸如纯文本密码之类的机密数据总是容易受到安全性的影响,始终建议对此类信息进行加密并使用SSL传输这些机密数据.Java为此提供了多种加密算法.在本文中,我们将讨论Java中具有CBC模 ...

  4. Oracle的AES加密与解密用法

    Oracle的AES加密与解密用法 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/it ...

  5. python实现字母的加密和解密 字典_python实现AES加密与解密

    AES加密方式有五种:ECB, CBC, CTR, CFB, OFB 从安全性角度推荐CBC加密方法,本文介绍了CBC,ECB两种加密方法的python实现 python 在 Windows下使用AE ...

  6. aes加密算法python实现_Python基于pycrypto实现的AES加密和解密算法示例

    本文实例讲述了Python基于pycrypto实现的AES加密和解密算法.分享给大家供大家参考,具体如下: 一 代码 # -*- coding: UTF-8 -*- import string imp ...

  7. oracle实现aes解密_Oracle的AES加密与解密用法

    Oracle的AES加密与解密用法 2013年12月11日 11:50:35 iteye_751 阅读数:428 --加密字符串 create or replace function des3_enc ...

  8. Php AES加密、解密与Java互操作的问题

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...

  9. 每日一课 | AES加密和解密(CBC模式)

    通过有线方式传输诸如纯文本密码之类的机密数据总是容易受到安全性的影响,始终建议对此类信息进行加密并使用SSL传输这些机密数据.Java为此提供了多种加密算法.在本文中,我们将讨论Java中具有CBC模 ...

最新文章

  1. 轻松了解Kubernetes认证功能
  2. 谷歌和Facebook正在吸走欧洲的人才
  3. 行走智慧城市 数据要有统一“身份”
  4. 分布式链路追踪框架的基本实现原理
  5. 不降的数字(51Nod-2499)
  6. MySQL ALTER TABLE报错Duplicate entry 'xxx' for key 'PRIMARY'解决方法
  7. 无向图中两点之间的距离_九上数学:二次函数图像,一动点到两定点距离和最小...
  8. 【转】VMware虚拟机三种网络模式超详解
  9. BAPI:KBPP_EXTERN_UPDATE_CO, TCODE:CJ30/CJ40 第一部分
  10. 【题解】洛谷 P1957 口算练习题
  11. Python抽奖转盘、幸运大转盘源程序
  12. 笔记本电脑怎么给别人开热点
  13. java锟斤拷锟斤拷锟_锟斤拷?UTF-8与GBK互转乱码问题
  14. java.time.DateTimeException: Unable to extract ZoneId from temporal
  15. 你真的会用区块链赚钱吗?论区块链的商业思维
  16. tf.range详解
  17. 熬夜爆肝整理 400 页 《Python 修炼之道》,一本高分原创高清电子书送给你!
  18. 路由与交换技术期末上机考核
  19. css盒子模型有几种?以及盒模型设置?
  20. 基于Spring boot+freemarker+Mysql实现的玩具企业官网项目源码

热门文章

  1. [内附完整源码和文档] 基于Java实现的数独游戏
  2. iBatis的isNotEmpty非空属性
  3. python自动化--selenium
  4. java批量上传图片案例
  5. HTML--特殊符号
  6. 原神顶替者的秘密怎么做
  7. Hex HERE+ RTK GPS用于自创地面站的过程记录
  8. linux 双机资源切换,Linux双机集群自动切换.docx
  9. android 卡片机,跟卡片机说Bye 五款替代卡片机手机盘点
  10. git基础教程(20) 从版本库删除文件git rm