网上看了一些图片验证码的例子,发现其中的处理过程会把验证码保存到session中,以便其后的验证session不是由cookie实现的吗?读一下cookie不是就知道验证码了?请问这样安全吗?
2 回答
慕姐8265434
TA贡献1813条经验 获得超2个赞
Session是基于服务器端的,但是原理是由cookie实现的,如果是session,那服务器会发送一个唯一标识符给客户端cookie,但是服务器端会有个类似hashtable的全局变量,以键值对的形式存储在服务器端内存里。
如果是完全基于的cookie实现,那么在服务器端就不会有任何的存储。
验证码的实现安全级别最高的实施办法是使用session实现,只是在客户端发送一个cookie(验证码上数字加密后的字符串),但是服务器端对应的session内存储没加密的值,这样,在每次提交验证的时候,将服务器端的没加密的字符串在使用MD5加密后再与cookie字符串匹配,匹配成功即为正确,否则验证错误。
这个方案的漏洞在于只要用户截取一个cookie,然后模拟,只要在服务器端不重启(不丢失session)的情况下,就可以实现spam。
最好的方式是在cookie里面再加上时间,只要过了这段时间,验证码就失效
当然验证码还有问题,当在同一浏览器里同时打开两个含有验证码的页面,那么你再回到前一个打开的页面,验证码被后一个冲刷,这样用户的验证码也不正确。
- 2 回答
- 0 关注
- 697 浏览
添加回答
举报
0/150
提交
取消