gpt4 book ai didi

php - 我不明白为什么 session_regenerate_id 在低连接情况下很危险?

转载 作者:行者123 更新时间:2023-12-03 18:01:09 24 4
gpt4 key购买 nike

我正在研究我的网站的安全性,我会理解为什么应该谨慎使用 session_regenerate_id。
在 php 手册文档( https://www.php.net/manual/fr/function.session-regenerate-id.php )中,他们说:

Currently, session_regenerate_id does not handle an unstable network well, e.g. Mobile and WiFi network. Therefore, you may experience a lost session by calling session_regenerate_id.

You should not destroy old session data immediately, but should use destroy time-stamp and control access to old session ID. Otherwise, concurrent access to page may result in inconsistent state, or you may have lost session, or it may cause client(browser) side race condition and may create many session ID needlessly. Immediate session data deletion disables session hijack attack detection and prevention also.


我不明白为什么这个函数可能意味着失去连接。
我们向服务器发送请求,他更改 SID(使用旧值初始化 $_SESSION 并在 save_file 位置创建一个文件),以便他可以向客户端发送 cookie。
任何人都可以向我解释我们可以在哪里丢失 session ?
我真的很困惑,但我会理解这个问题以解决这个问题......
在此先谢谢大家:D
Ps : 我也看过 https://www.php.net/manual/fr/function.session-regenerate-id.php 上的文档我不明白第二个例子:
function my_session_start() {
session_start();
if (isset($_SESSION['destroyed'])) {
if ($_SESSION['destroyed'] < time()-300) {
// Ne devrait pas se produire habituellement. Cela pourrait être une
// attaque ou en raison d'un réseau instable. Supprimez tout l'état
// d'authentification de cette session utilisateurs.
remove_all_authentication_flag_from_active_sessions($_SESSION['userid']);
throw(new DestroyedSessionAccessException);
}
if (isset($_SESSION['new_session_id'])) {
// Pas encore complètement expiré. Pourrait être perdu cookie par réseau instable.
// Essayez à nouveau de définir le cookie d'ID de session approprié.
// Remarque: n'essayez pas de redéfinir l'ID de session si vous
// souhaitez supprimer l'état d'authentification.
session_commit();
session_id($_SESSION['new_session_id']);
// Nouvel ID de session doit exister
session_start();
return;
}
}
}
为什么如果“time()-300”可能是一次攻击?
而且我不明白为什么我们应该删除一个 session ,如果它可能是一个网络问题......它会导致连接丢失吗?我不明白我们为什么要提出豁免?有人可以帮助我吗?

最佳答案

该文本试图说“如果设置了销毁的时间戳,并且该时间戳超过 5 分钟,那么可能有人拿到了 cookie 并试图劫持 session 。如果它不到 5 分钟,那就是可能只是遇到网络问题的用户。”
因此,如果它是 session 劫持,您希望删除 session 并在某处记录错误。如果只是网络问题,则要更新 session 。
另外值得注意的是,示例代码缺少一个 elseif ($_SESSION['destroyed'] < time()-300)堵塞。

关于php - 我不明白为什么 session_regenerate_id 在低连接情况下很危险?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55524400/

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