-1

好吧,我正在尝试在我的本地主机上测试会话固定/劫持。

我试图将带有 SID 的 URL 从攻击者提供给受害者,并让受害者登录该 URL。但是当受害者登录时,攻击者刷新了页面,仍然在登录页面。

然后我发现如果我在浏览器中有两个登录选项卡,受害者在选项卡 1 中登录,但选项卡 2 在刷新后不会自动登录。所以这可能就是我的攻击者留在登录页面的原因?

我的问题是,如果用户已经在一个选项卡中登录,我必须在我的 php 文件中做什么才能在其他选项卡中自动登录用户? 对于这种情况,我应该查找什么关键字?

4

1 回答 1

0

会话使用 cookie 来记住用户是否已登录。当您启动会话 ( session_start()) 时,服务器会发送一个带有唯一会话 ID 的会话 cookie。当用户请求一个需要登录的页面时,服务器会检查带有 id 的 cookie 以确保它是有效的。

Session Fixation 和 Session HiJacking 非常相似,主要区别在于会话是如何被破坏的。切勿将 SESSID 放在 URL 中,您只是要求被黑客入侵。相反,我建议您在用户登录时创建一个会话变量。
例如:

自动登录:检查代码

session_start();
if(isset($_SESSION['logged_in'])){
    header("location:loginonlypage.php")
}

防止会话劫持/修复:
但是,仅仅因为您的会话 ID 不在 url 中并不意味着会话劫持/修复不会发生。使用用户的 ip 作为保护措施来防止这种情况发生。还要确保将会话 cookie 设置为仅 HTTP,这样 Javascript 就不会被诱惑吃掉你的 cookie :)

ini_set('session.cookie_httponly', 1); //SET HTTP ONLY COOKIE
    if (!isset($_SESSION['last_ip'])) {
        $_SESSION['last_ip'] = $_SERVER['REMOTE_ADDR'];
    }

    if ($_SESSION['last_ip'] !== $_SERVER['REMOTE_ADDR']) {
        session_unset();
        session_destroy();

    }
于 2015-11-03T09:33:06.820 回答