首页 新闻 会员 周边

秒杀系统动态url设计

0
[待解决问题]

使用动态url的目的是为了避免静态url被反复提交,降低服务器压力。看了网上的文章,动态url的流程是在url中插入一段随机字符,一般使用MD5加密。原来直接使用静态url,现在变成了前端先向后端请求获得随机字符,再拼接获得动态url,后端校验该路径是否合法,合法的请求被放行。
关于这种使用MD5的加密方法,我有几个疑问:
1、使用md5对固定的复杂字符加密,得到加密字符返回前端。但是这种方法不是一样会使得该随机字符可能会被用户获取到,之后任然可以发送大量请求(当然可以使用限制一定时间内用户的访问次数来解决,这种静态url没什么区别啊)
2、使用MD5对有规律变化的字符进行加密,例如商品id和用户id拼接再进行MD5加密(可能被用户猜到,猜到就寄),使用递增字符进行加密,密文存到缓存中,后端校验方法即查找缓存中有无该字符(这种缓存的方法有缺点,缓存的容量是有限的,高并发时可能不太行)
3,使用可以解密的算法对字符进行加密,后端只需对密文进行解密,校验解密后的字符时候合法(感觉这种方式比较好)
我的理解有什么不正确的地方吗,或者有什么改进或者更好的的方法吗?

up-bear的主页 up-bear | 初学一级 | 园豆:134
提问于:2022-05-28 20:17

没有搞过,但是我感觉你的描述里有几个误区:1,MD5严格来说不能用来加密,只是一些加密算法会用到类似的hash算法,MD5就是一种Hash算法。2,我注意到你说使用动态url是为了避免重复提交,那我的理解应该是说一个url只能用一次,对吗,请求结束后应该有个标记或其它方法,当再次接收到相同的请求时能够识别出来并拒绝下一步动作

会长 1年前
< >
分享
所有回答(1)
0

说的乱七八糟.
你的目的如果是为了重复提交,那有防止重复提交的方案,

使用动态url的目的是为了避免静态url被反复提交,降低服务器压力
这一句话就很搓
你去百度下 防止重复提交
会有很多方案出来

  1. md5是哈希算法, 如果想要防止重复提交也很简单 在服务器内存里搞个一个静态数组: 可请求token,这个token就是md5的值,每次请求后从这个数组里删掉请求来的md5值,, 不在数组里的请求就直接返回错误
    哎..尝试了下照你的思路走.当是你的思路从开始就是错的,,不好继续走啊,
    你想百度下 防止重复提交吧
吴瑞祥 | 园豆:29449 (高人七级) | 2022-06-06 11:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册