Session是基于服务器端的,但是原理是由cookie实现的,如果是session,那服务器会发送一个唯一标识符给客户端cookie,但是服务器端会有个类似hashtable的全局变量,以键值对的形式存储在服务器端内存里。
如果是完全基于的cookie实现,那么在服务器端就不会有任何的存储。
验证码的实现安全级别最高的实施办法是使用session实现,只是在客户端发送一个cookie(验证码上数字加密后的字符串),但是服务器端对应的session内存储没加密的值,这样,在每次提交验证的时候,将服务器端的没加密的字符串在使用MD5加密后再与cookie字符串匹配,匹配成功即为正确,否则验证错误。
这个方案的漏洞在于只要用户截取一个cookie,然后模拟,只要在服务器端不重启(不丢失session)的情况下,就可以实现spam。
最好的方式是在cookie里面再加上时间,只要过了这段时间,验证码就失效
当然验证码还有问题,当在同一浏览器里同时打开两个含有验证码的页面,那么你再回到前一个打开的页面,验证码被后一个冲刷,这样用户的验证码也不正确。
session是session
cookie是cookie
估计你的这个图片验证码的原理是保存在SESSION里,应该和COOKIE没有关系
两者之间有很大区别,首先Session是基于服务器端的,在用户访问时给每一个用户分配一个SessionID;而Cookies是基于客户端的,数据是保存在C盘的一个Cookies文件夹中,它的安全性远远低于session。
你会理解为Session是由Cookie实现的,是因为通常在Cookie中带了一个SessionID,然后服务器根据这个SessionID找到具体的Session,所以说并不是Session中的数据都在Cookie中
加密后存于session,读取时在解密