2011-08-24 2 views
2

저는 웹 개발에 익숙하지 않으며 CSRF, XSS 및 세션 하이재킹에 대해 읽었습니다. 제안 된 솔루션 중 하나는 단순히 nonce을 사용하여 요청의 유효성을 검사하는 것입니다. PHP로 세션 하이재킹을 막기 위해이 스크립트를 작성했습니다. 세션 ID를 재생성하는 것과 정신적으로 비슷하다고 생각합니다. 즉 식별자마다 또는 그 조합 (세션 ID와 넌스)이 요청마다 변경됩니다.세션 하이재킹 예방을 적절히 구현하십시오.

if(!isset($_SESSION["user"]["nonce"]) || 
    $_SESSION["user"]["nonce"] == $_COOKIE["SITE_nonce"]) 
{ 
    $nonce = md5(uniqid()); 
    $_SESSION["user"]["nonce"] = $nonce 
    setcookie("SITE_nonce", $nonce, 0, "/path"); 
} 
else 
    die("Invalid Request"); 

충분합니까? SSL을 감당할 수 있는지 정말 모르겠다. 세션 하이 잭스에 대한 좋은 해결책이 될 것이라는 것을 알고 있지만이 접근법에 대한 통찰력이 필요하다. 내가 놓친 게 있니?

답변

0

이것은 실제로 일반적인 문제입니다. 이전에는 여러 번 논의되었습니다. 많은 좋은 가이드를 얻기 위해 http://owasp.com/index.php/Main_Page과 같은 보안 페이지를 방문하는 것이 좋습니다.

구현에 대한 설명 : 사용자가 처음 생성 한 일종의 해시를 세션 및 IP로 저장할 수도 있습니다. 또한 나는 쿠키에 좋은 시간을 보낸 것 같아요.

+0

감사합니다. 나는 몇몇 페이지에서 탈지하기 시작했고, 나의 구현이 Page Tokens에 적합하다는 것을 알았다! 쿠키가 너무 많으면 해시와 관련된 두 번째 단락에서 의미하는 바를 이해하지 못합니다 (이전에는 쿠키가 아니라 일부만 사용했습니다). –

+0

@Rolando Cruz 내가하는 일은 md5 (IP, 사용자 이름 및 암호 단계)이며 특정 사용자의 "해시"필드 아래에 저장합니다. 그래서 누군가가 돌아올 때 (쿠키로) 그 해시를 비교하고 일치하지 않으면 비교합니다. 나는 그 때 그것을 기록하고, 그들을 쫓아 내고 가능하게 몇 분 동안 그들을 밖으로 지킨다. – Luke

+0

아. 내가 참조. 나는 사용자가 사이트를 처음 방문하는 것과 관련이 있다고 생각했습니다. 이 경우에는 'HTTP_USER_AGENT'의 값을 해시에 추가 할 것입니다. 감사! –