我正在构建一个论坛,但我不确定设置 cookie 的最佳实践。
这是我在用户注册网站时构建的 cookie:
setCookie($name,$ip,time()+300000,"/");
而不是这个:time()+300000。我希望 cookie 永远存在,但我不知道该怎么做。
此外,我还有一个有关安全的问题。如何检查 cookie 是否未被篡改或被黑客设置?
另一个问题,如何检查用户的浏览器是否允许 cookie?
更新:
我在登录验证有效后立即输入此内容: setCookie($name,$ip,time()+60*60*24*365,"/");
更新:
if(!isset($_COOKIE['$name'])
{
$salt="<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="caaba4aeb8a5a3aebab8a5adb8aba7a7afb8f8fc8ab3aba2a5a5e4a9a5a7" rel="noreferrer noopener nofollow">[email protected]</a>";
$hash = SHA2(salt + $_POST['pass']);
setCookie($name,$hash,time()+60*60*24*365*50,"/");
}
最佳答案
对于持续时间,只需使用足够大的数字而不是 300000
。
time() + 60 * 60 * 24 * 366 * 15
为您提供 15 年。
为了防止篡改,请使用安全哈希函数(例如 SHA-2 ),在服务器上存储 secret salt
(例如 256 位随机字符串),计算哈希= SHA2(salt + data)
并设置一个保存哈希
的 cookie。
现在,当您读取 cookie 时,您所要做的就是验证 hash
的值是否正确。
关于php - 在 php 和站点安全中设置 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7875110/