如何防止会话劫持?

时间:2013-02-14 13:08:21

标签: php session pdo

我正在尝试制作一个受到会话劫持保护的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';
            }
        }

谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

只需对服务器使用正确的SSL / TLS加密,并将Cookie保存为安全(仅限https - 第6个参数setcookie),即可阻止大多数会话劫持尝试。

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

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