’,$ email,time()+ 60 * 60 * 24 * 100); } 其他{ setcookie(‘email’,$ email,time()+ 3600); }
我的问题是关于 安全 </跨度> 的问题。上面的代码是不安全的?它需要类似于 的东西
轶事时间:回到2002年左右,我正在看我学校网络的数据包转储,并告诉他们他们需要确定他们的成绩,出勤率,学生信息,一切都在阳光下的系统。他们设置的方式是这样的:在用户进行身份验证后,系统会设置一个只包含用户名和会话结束时间的cookie。我启动了一个浏览器,选择了一个用户名(首字母,姓氏),并将其设置为cookie。我有权访问。
他们应该做的是设置一个随机的128号码并跟踪服务器中的号码(号码,相应的用户,超时值)。
也可以看看
良好的会话实践 。
如何安全地哈希密码 。
为了方便防止用户更改cookie的值,您可以使用 这个班 在网上找到。它将编写一个包含与所有cookie值的“总和”对应的哈希值的cookie,因此如果更改数据,则哈希值将不正确。
只需要三种方法: Cookie::set(cookie_name, value) , Cookie::get(cookie_name) 和 Cookie::reset() 。
Cookie::set(cookie_name, value)
Cookie::get(cookie_name)
Cookie::reset()
您需要验证随机生成的哈希或服务器端的东西。用户可以调整所有需要的数据,并为cookie数据发回任何内容。使用您当前的方案,似乎很容易指定他们想要的任何用户。害怕。
登录时,请在数据库中粘贴身份验证密钥,以及IP,UserAgent和Expiration。如果他们尝试使用您的站点并且IP或UserAgent不同,或者密钥已过期,则强制注销。