日期:2014-05-17  浏览次数:20445 次

100分请教一个问题
当我登录成功之后,保存客户端账号和密码在cookie里面,密码经过了md5加密,这样也可以让用户设置自动登录。

那么我在一些需要获取用户信息的页面,是根据客户端提交的cookie中的账号来去数据库获取,那么如果客户端伪造一个cookie呢,它伪造的一个cookie的值是其他用户的账号,那么我是不是需要每次都去进行一次数据匹配,去匹配我的账号和密码是否对应

------解决方案--------------------
账号你可以明文保存在COOKIE
然后再保存一个 MD5(账号+密匙)的值,密匙是一个不让人知道的字符串
这样就可以直接从COOKIE明文获取账号,但记得要做对比,除非知道密匙,否则不能伪造的。
而且这样也不用读数据库。
------解决方案--------------------
基于这个基础,还可以保存个时间信息,做个时间判断,让这个加密值只在一定时间内有效,这样就更加安全了。

探讨
账号你可以明文保存在COOKIE
然后再保存一个 MD5(账号+密匙)的值,密匙是一个不让人知道的字符串
这样就可以直接从COOKIE明文获取账号,但记得要做对比,除非知道密匙,否则不能伪造的。
而且这样也不用读数据库。

------解决方案--------------------
可以单独写套加密算法,别人不知道加密算法是伪造不了的。
------解决方案--------------------
可以不需要每次都去匹配,当你刚你进入系统的时候去判断下session是否存在,如果存在就直接访问。如果不存在就拿cookie中的数据去数据库匹配下,然后保存到session中。
------解决方案--------------------
没必要把密码也放入COOKIE
------解决方案--------------------
写一套自己的加密算法

有密钥,这样别人不知道这个密钥的话,是不能伪造的
------解决方案--------------------
是的。账号+密匙再MD5。

探讨
客户端保存账号肯定是明文保存卅,你的意思是cookie里保存一个字符串,字符串由账号+密码构成,然后每次去匹配账号和这个加密的字符串?

引用:

账号你可以明文保存在COOKIE
然后再保存一个 MD5(账号+密匙)的值,密匙是一个不让人知道的字符串
这样就可以直接从COOKIE明文获取账号,但记得要做对比,除非知道密匙,否则不能伪造的。
而且这样也不用读数据库。
……

------解决方案--------------------
我纯粹只是想说:

- -不要相信这些可爱的孩子的建议
“自己写一套加密方法”是这个世界上最天真可笑的建议 没有之一
除非你自己是顶尖的数学家 否则你设计的任何算法都不会有现在市面上正在使用的加密算法安全性更好

另外 其实你根本就不需要保存用户的密码 甚至账号信息都不要 而是保存一个token就可以了
最简单无聊的做法之一就比如:用户登录的时候 直接生成一个guid(无脑吧?) 把用户的账户和这个guid存在一个地方(服务器上的 数据库啊还是神马的自己看着办) 然后把token写到用户的cookie里面去

用户在此访问的时候拿cookie里面的token去找这家伙的记录在不在 有没过期 如果答案是OK 自动登录 如果不OK 让他该干嘛干嘛去
------解决方案--------------------
这样搞基本上绝对没人能伪造cookie(包括你自己在内)
因为你自己都不会知道token应该是什么~
------解决方案--------------------
建议 session 过期就做做匹配,我的做法是 用户Id + 二次MD5+DES加密的密码