2013-02-14 4 views
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'; 
      } 
     } 

감사합니다.

+0

'wachtwoord'는 '암호'를 의미합니까? –

+0

네, 죄송합니다. 네덜란드어로 썼습니다. –

+0

서버에서 SSL 암호화를 살펴 보셨습니까? 일반 http를 통해이 작업을 수행하는 경우 처음 시작할 수 있습니다. –

답변

0

대부분의 세션 하이재킹 시도는 서버에 적절한 SSL/TLS 암호화를 사용하고 쿠키를 안전한 것으로 저장하여 방지 할 수 있습니다 (https 전용 - 여섯 번째 매개 변수는 setcookie).

이렇게하면 정보를 얻기 위해 스니핑 (fiffheep)과 같은 중간자 (man-in-the-middle) 공격과 브라우저 확장이 패킷을 스니핑하지 않게됩니다.

아무도 컴퓨터에 대한 물리적 액세스를 중지하지 않습니다. 그것은 단지 불가능하거나 보호할만한 가치가 없습니다 (대부분의 사람들은 자신의 소셜 네트워킹 계정보다 다른 사람들이 잃어 버리거나 갖고 싶어하는 컴퓨터에 더 많은 것을 가지고 있습니다).

관련 문제