会话认证漏洞

Session劫持攻击

Session劫持攻击是指黑客劫持目标用户的session id来获取网站服务器上未经许可的存取信息,特别是窃取目标用户等的cookie数据,来取得网站的认可。

攻击步骤

在这里插入图片描述

代码展示

login3.php

<?php
    header("Content-Type:text/html;charset=utf-8");
    session_start();
    if(isset($_POST['login'])){
        $username = $_POST['username'];
        $password = $_POST['password'];
        $conn = mysql_connect("localhost","root","root");
        mysql_select_db("admin",$conn);
        $sql = "SELECT * FROM admin WHERE username='".$username."'";
        $result = mysql_query($sql) or die(mysql_error());
        if($row = mysql_fetch_row($result)){
            $_SESSION['username'] = $username;
            $_SESSION['password'] = $password;
            $_SESSION['book'] = 1;
            header("Location:http://127.0.0.1/PHP/member.php?user=".$username);
        }
    }
    ?>
<html>
<body>
    <form method="post" name="form">
        账号:<input type="text" name="username" id="username">
        密码:<input type="password" name="password" id="password">
        <input type="submit" name="login" id="login">
    </form>
</body>
</html>

member.php

<?php
    header("Content-Type:text/html;charset=utf-8");
    session_start();
    echo "访客的session id是".session_id()."<br />";
    echo "访客".$_GET['user']."<br />";
    echo "book的商品数量".$_SESSION['book']."<br />";
    ?>

attack.php

<?php
    header("Content-Type:text/html;charset=utf-8");
    session_start();
    echo "访客的session id是".session_id()."<br />";
    echo "访客".$_SESSION['username']."<br />";
    echo "book的商品数量".$_SESSION['book']=2000 ."<br />";
    ?>

首先我们先登录网站获取一个session id的值
在这里插入图片描述
然后再访问attack.php,并将PHPSESSID的值输入进去
在这里插入图片描述
然后回到member.php页面,刷新页面发现book的商品数量变为了2000
在这里插入图片描述

修复方案

  1. 使用随机而且长度够大的数字或字符串来当做session id
  2. 将网页之间传递的数据使用某种形式进行封装,特别是session id
  3. 更改session名称
  4. 注销后即销毁session的所有数据

Session固定攻击

session 固定攻击是因为黑客固定住目标用户的session id,因此目标用户所使用的session可有攻击者指定。

攻击步骤

在这里插入图片描述

修复方案

  1. 不要从GET/POST变量中接受session id
  2. 调用session_start函数后,立即产生新的session id,并删除旧的session
  3. 将session id存放在cookie内
  4. 注销后即销毁session的所有数据
  5. 使用时间戳来记录session的使用时间,如果两次session的相差时间太长,就销毁session的所有数据
  6. 检查用户的IP地址,如果IP地址改变就产生一个新的session id,并且删除旧的session

总结

Session会话劫持主要是攻击者劫持了用户的session id,然后对该用户的数据进行恶意操作的过程;而Session固定攻击则是用户使用了攻击者事先准备好的session id,然后用户输入了敏感信息登录网站后,网站对该session id表示信任,攻击者就能使用该session id进行恶意操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

平凡的学者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值