如何防止会话劫持


How do I prevent session hijacking?

我正在尝试制作一个防止会话劫持的loginscript。我的问题是:我该怎么做?我真的不明白我怎么能安全地做到这一点。目前我有这个代码。

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';
            }
        }

谢谢你的帮助。

大多数会话劫持尝试都可以通过对服务器使用正确的SSL/TLS加密并将cookie保存为安全的(仅https-setcookie的第6个参数)来防止。

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

没有什么能阻止某人对计算机进行物理访问。这是不可能的,也不值得保护(大多数人的电脑上比他们的社交网络账户有更多他们想失去或掌握在别人手中的东西)。