0

我正在尝试制作一个防止会话劫持的登录脚本。我的问题是:我该怎么做?我真的不明白如何以安全的方式做到这一点。目前我有这个代码。

if (!empty($_POST["naam"]) && !empty($_POST["wachtwoord"]))
{
    $naam = $_POST["naam"];
    $wachtwoord = $_POST["wachtwoord"];
    $salt = "boterhammetkaas";
    $wachtwoord = sha1($wachtwoord.$salt);
    $query =$db->prepare("SELECT * FROM opdracht4 WHERE naam = :naam and wachtwoord = :wachtwoord");
    $query->bindParam(':naam', $naam, PDO::PARAM_STR);
    $query->bindParam(':wachtwoord', $wachtwoord, PDO::PARAM_STR);
    $query->execute();
    $rij = $query->rowCount();
    if($rij == 1) 
    {
    $result = $query->fetch(PDO::FETCH_OBJ);
    $status = $result->status;
    //setcookie("TestCookie", $status, time()+3600);
    //setcookie("ip", $ip, time()+3600);
    $_SESSION['status']= $status;
    $_SESSION['naam']= $naam;
    }
    else 
    {
       $antwoord = 'Deze gegevens zijn niet bekend';
    }

 if (!empty($_SESSION["status"]))
        {
            if ($_SESSION["status"] == 1)
            {
                include 'beheerder4.php';
                $page = 'overzicht';
            }
            if ($_SESSION["status"] == 2)
            {
                include 'projectleider4.php';
                $page = 'overzicht';
            }
            if ($_SESSION["status"] == 3)
            {
                include 'gebruiker4.php';
                $page = 'overzicht';
            }
        }

感谢您的帮助。

4

1 回答 1

0

只需对您的服务器使用适当的 SSL/TLS 加密,并将您的 cookie 保存为安全的(仅 https - 第 6 个参数到setcookie),就可以防止大多数会话劫持尝试。

这将阻止中间人攻击和浏览器扩展(如 firesheep)嗅探数据包以获取此信息。

没有什么可以阻止某人物理访问计算机。这是不可能的,也不值得保护(大多数人在他们的计算机上比他们的社交网络帐户更愿意丢失或掌握在其他人手中)。

于 2013-02-14T13:17:44.970 回答