gpt4 book ai didi

php - 我应该在每个页面上重新生成_session_id吗?

转载 作者:行者123 更新时间:2023-12-02 01:59:10 25 4
gpt4 key购买 nike

我正在尝试为我的用户身份验证 session 添加更多安全性。当用户登录时,我regenerate_session_id,但我希望您回答是否在我验证用户身份的每个页面上regenerate_session_id会对我有所帮助。

在每个页面上验证用户

<?php
session_start();

if(!isset($_SESSION['MEMBER_ID']) || (trim($_SESSION['MEMBER_ID']) == '')) {
header("location: denied.php");
exit();
}
?>

我将其更改为

session_start();

if(!isset($_SESSION['SESS_MEMBER_ID']) || (trim($_SESSION['SESS_MEMBER_ID']) == '')) {
header("location: access-denied.php");
exit();
} else {

session_regenerate_id(); }

最佳答案

您可以使用 session_regenerate_id 来防止 session 固定攻击,在这种攻击中,攻击者了解给定用户的 session ID,然后“劫持”该 session ID 以代替用户进行操作。

但是,必须小心。其一,您必须考虑异步请求。如果您有许多来自用户的并发请求,您需要避免这样一种情况:一个脚本正在使用 session 数据,而另一个脚本则尝试重新生成 - 一个脚本正在使用另一个脚本试图销毁的数据。

此外,这确实增加了开销。重新生成每个请求可能有点矫枉过正。相反,尝试保留一个请求计数器;每 10 个请求(左右,任意选择),重新生成 ID。

请务必将参数传递为 true - 您不希望或不需要旧的 session 数据(请记住,并发请求)。请参阅 ( docs ) 了解更多信息。

综上所述,这种机制是一种“微增强”,会给您带来比实际安全更多的虚假安全感。 session 固定攻击并不常见,特别是如果您已经采取其他措施来增强安全性。没有什么可以替代,例如使用 HTTPS 进行安全连接;没有什么可以取代密码复杂性要求。

关于php - 我应该在每个页面上重新生成_session_id吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7180559/

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