使用动态url的目的是为了避免静态url被反复提交,降低服务器压力。看了网上的文章,动态url的流程是在url中插入一段随机字符,一般使用MD5加密。原来直接使用静态url,现在变成了前端先向后端请求获得随机字符,再拼接获得动态url,后端校验该路径是否合法,合法的请求被放行。
关于这种使用MD5的加密方法,我有几个疑问:
1、使用md5对固定的复杂字符加密,得到加密字符返回前端。但是这种方法不是一样会使得该随机字符可能会被用户获取到,之后任然可以发送大量请求(当然可以使用限制一定时间内用户的访问次数来解决,这种静态url没什么区别啊)
2、使用MD5对有规律变化的字符进行加密,例如商品id和用户id拼接再进行MD5加密(可能被用户猜到,猜到就寄),使用递增字符进行加密,密文存到缓存中,后端校验方法即查找缓存中有无该字符(这种缓存的方法有缺点,缓存的容量是有限的,高并发时可能不太行)
3,使用可以解密的算法对字符进行加密,后端只需对密文进行解密,校验解密后的字符时候合法(感觉这种方式比较好)
我的理解有什么不正确的地方吗,或者有什么改进或者更好的的方法吗?
说的乱七八糟.
你的目的如果是为了重复提交,那有防止重复提交的方案,
使用动态url的目的是为了避免静态url被反复提交,降低服务器压力
这一句话就很搓
你去百度下 防止重复提交
会有很多方案出来
没有搞过,但是我感觉你的描述里有几个误区:1,MD5严格来说不能用来加密,只是一些加密算法会用到类似的hash算法,MD5就是一种Hash算法。2,我注意到你说使用动态url是为了避免重复提交,那我的理解应该是说一个url只能用一次,对吗,请求结束后应该有个标记或其它方法,当再次接收到相同的请求时能够识别出来并拒绝下一步动作
– 会长 2年前