gpt4 book ai didi

php - session_regenerate_id 和安全属性

转载 作者:行者123 更新时间:2023-12-04 02:55:45 27 4
gpt4 key购买 nike

我有一个奇怪的问题,在我使用

重新生成 session ID 之后
session_regenerate_id(true);

cookie 似乎失去了它的“Secure, HttpOnly”标志。

我可以使用

重置 cookie
$params = session_get_cookie_params();
setcookie("PHPSESSID", session_id(), 0, $params["path"], $params["domain"],
true, // this is the secure flag you need to set. Default is false.
true // this is the httpOnly flag you need to set

);

但 veracode(我们用于安全测试的软件)将其标记为不确定,因为第一个 cookie(重新生成的 cookie) header 中没有安全的 HttpOnly 标记。

这是示例标题

Cache-Control: no-store, no-cache, must-revalidate
Connection: Keep-Alive
Content-Length: 0
Content-Type: text/html; charset=UTF-8
Date: Tue, 06 Nov 2018 12:56:41 GMT
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive: timeout=5, max=98
Location: home.php
Pragma: no-cache
Server: Apache
Set-Cookie: PHPSESSID=18a289a6c8d34b0df72dafc9d5e12c92; path=/
Set-Cookie: PHPSESSID=18a289a6c8d34b0df72dafc9d5e12c92; path=/; secure; HttpOnly

Veracode 标记问题是因为第一个 cookie - 没有安全的 httpOnly 标签。我猜它只读了第一个,或者感觉默认情况下不显示它们是不安全的。我如何着手在重新生成的 session 中强制使用这些标签?还是有更好的方法来实现他们的要求?这是我的代码。

session_start();

$_SESSION = array();
session_unset();
session_destroy();
session_start(); //Not sure if this is needed

session_regenerate_id(true);
$params = session_get_cookie_params();
setcookie("PHPSESSID", session_id(), 0, $params["path"], $params["domain"],
true, // this is the secure flag you need to set. Default is false.
true // this is the httpOnly flag you need to set

);

最佳答案

在您的本地文件夹 PHP.ini 设置中(通常称为 user.ini 并在您网站帐户的 HTML 根目录中找到),您可以设置 PHP.ini 值:

session.cookie_secure=1
session.cookie_httponly=1
session.use_only_cookies=1

这意味着该帐户(本网站)对 session cookie 的任何使用都将符合上述要求。

这比将这些要求编码到您的脚本中要好得多,因为这很容易被遗漏或忽视。

然后您的脚本可以是:

session_start();
...
session_regenerate_id(true);

你会知道其他一切都会自动处理。


您可以阅读更多关于 session 安全的内容 HERE .

关于php - session_regenerate_id 和安全属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53172484/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com