php - 在 php 和站点安全中设置 cookie

标签 php security cookies

我正在构建一个论坛,但我不确定设置 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/

相关文章:

php - 使用参数化查询时,为什么 mysqli 每个语句创建两行日志,而 ORM 仅创建一行日志?

php - 在php中生成随 secret 码

php - 如何防止服务器端从非预期来源接收数据

java - Spring Data从文件库或其他 protected 源读取MongoDB密码

javascript - 如何在运行解析之前检查 JSON 解析方法是否返回值

javascript - 如何使用 NodeJs 请求 GET 模块发送 cookie?

c# - 使用 C# 从 Windows 应用程序调用 Java Web 服务时,如何在请求中设置 cookie

php - 我可以用 PHP 封装函数吗?

java - Android 无法解码 PHP base64 代码

php - 数组检查 undefined offset php