gpt4 book ai didi

Php session 固定示例和修复

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:06:22 29 4
gpt4 key购买 nike

我的问题是关于 session 固定的总结:

  • 爱丽丝在银行有一个账户 http://unsafe.com/ .不幸的是,爱丽丝不是很懂安全。

  • 马洛里出去从银行取爱丽丝的钱。

  • Alice 对 Mallory 有一定程度的信任,并且会访问Mallory 发给她的链接。

    1. Mallory 已确定 http://unsafe.com/接受任何 session 标识符,接受来自查询字符串的 session 标识符并具有没有安全验证。 http://unsafe.com/因此不安全。
    2. 马洛里给爱丽丝发了一封电子邮件:“嘿,看看这个,有一个很酷的新我们的帐户摘要功能银行,http://unsafe.com/?SID=I_WILL_KNOW_THE_SID”。Mallory 正试图将 SID 固定为 I_WILL_KNOW_THE_SID。
    3. Alice 很感兴趣并且访问http://unsafe.com/?SID=I_WILL_KNOW_THE_SID .正常登录屏幕弹出,爱丽丝登录。
    4. 马洛里来访 http://unsafe.com/?SID=I_WILL_KNOW_THE_SID现在可以无限制访问到爱丽丝的帐户。 (来源:RichieHindle)

问题:

Q1 - 有没有办法明确阻止网站接受任何 session 标识符?

问题 2 - 我没有在我的网站上使用 $_GET 变量,所以有没有办法阻止从查询字符串中接受 session 标识符?

  • 注意:我正在使用带 SSL 的 php 5.4.3,还将使用 session_regenerate_id..

最佳答案

您可以设置 martinstoeckli 在他的回答中提到的选项,但这不会阻止 session 固定。它使 session 固定更难受到攻击,但并不能阻止它。

正如 ServerBloke 所提到的,您可以在验证用户的登录信息之后和显示需要身份验证的第一个页面之前立即使用 session_regenerate_id() 来防止 session 固定。

让攻击者更难利用 session 固定并不能阻止 session 固定。您必须生成一个新的 session ID。

人们越来越多地使用公共(public)的、不安全的、不受信任的 wi-fi 热点。可以从空中嗅探 session 。在物理网络上,它们可以从线路上嗅探出来。他们还可以通过使用中间人攻击来强制您访问任何 URL。因此, session 固定仍然是一个问题,即使攻击者无法向您发送 URL。

知道 session (和密码)可以被嗅探,还需要另一个步骤来防止 session 劫持。那就是 HTTPS(TLS/SSL)。

所有需要身份验证的 protected 页面只能通过 HTTPS 访问。因此,登录页面(用户发送用户名和密码的页面)应该通过 HTTPS 访问。在同一个脚本中,您必须重新生成一个新的 sessionID。然后必须通过 HTTP 访问 session 剩余部分的所有页面,以保护新 session ID。

这是一个示例伪代码 login.php 脚本:

// Force SSL
if($_SERVER["HTTPS"] != "on") {
die('Must login via HTTPS');
}

// Load the current sessionID
session_start();

// Validate the login information, being sure to escape the input
...
if (! $valid) {
die('Invalid login');
}

// Start the new session ID to prevent session fixation
session_regenerate_id();

// Clear the old session
$_SESSION=array();

// Log them in
$_SESSION['user_id'] = $userID;

关于Php session 固定示例和修复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10715002/

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