在我正在开发的网站上,我正在检查用户是否已登录,如果已设置cookie。问题是我正在将这些信息用于数据库上的某些请求,并允许他在网站上执行某些任务。虽然,我想到如果用户编辑其cookie,他可能能够成为其他人(编辑它的用户名/ id)。那么,有没有办法保护它或我必须使用会话?
答案 0 :(得分:5)
是的,您可以使用cookies。您只需确保cookie提供可用于对用户进行身份验证的数据,而不是表示用户 进行身份验证的令牌。
错误的cookie:
username=foo,logged_in=true
好饼干:
token=uifhjrjf4093jf3904j90j390kf934j8438j0493jf9034
然后将身份验证数据与服务器上的数据存储区进行比较。
我必须使用会话吗?
会话是一种临时存储用户(可能会或可能不会通过身份验证)的方法。它们是解决部分问题的快速简便方法,而不是应该引起我 的反应的东西吗? :(
大多数会话库使用cookie来存储令牌,该令牌将与会话关联的数据集合链接到会话所属的浏览器。
答案 1 :(得分:2)
我通常做的是在cookie中提供随机哈希,然后将其指向数据库表,在该数据库表中我存储完整的浏览器字符串,生存时间,最后访问时间,用户名和哈希密码(为了比较,如果用户因为被盗用而更改了密码,这将使除了更改密码的会话之外的所有其他会话无效。