2013-12-21 4 views
0

these docs을 사용하여 세션 하이재킹 (페이지 하단)에 대한 특정 수준의 보호 기능을 통합하고 있습니다. 기사에서 설명하는 내용의 기본 사항을 이해할 수 있지만 필자는이 모든 것에 대해 아직 익숙하지 않으며 내가해야 할 일을 정확하게 지적 할 수 없습니다.세션 하이재킹을 방지하기 위해 이러한 코드를 통합하는 방법

<?php 

session_start(); 

if (isset($_SESSION['HTTP_USER_AGENT'])) 
{ 
    if ($_SESSION['HTTP_USER_AGENT'] != md5($_SERVER['HTTP_USER_AGENT'])) 
    { 
     /* Prompt for password */ 
     exit; 
    } 
} 
else 
{ 
    $_SESSION['HTTP_USER_AGENT'] = md5($_SERVER['HTTP_USER_AGENT']); 
} 

?> 

을 ... 내가 좀 이것은 위에서보다 안전하게 할 수있는 방법을 이해 :

나는이 일을 얼마나 얻을

<?php 

$string = $_SERVER['HTTP_USER_AGENT']; 
$string .= 'SHIFLETT'; 

/* Add any other data that is consistent */ 

$fingerprint = md5($string); 

?> 

는 그러나, 나는이 붙어 해요 결합에 두 개를 하나의 작업 스크립트로 만듭니다. 문서 상태 :

이 지문을 URL 변수로 전달해야합니다.

그 의미는 무엇입니까? URL에 지문을 전달한 다음 각 페이지에서 $ _GET을 사용해야합니까? 이 두 코드 스 니펫을 하나의 파일로 결합하여 모든 PHP 파일에 포함시킬 수있는 사람은 누구입니까?

답변

1

예,이 토큰을 모든 URL에 추가 한 다음 모든 페이지에서 확인해야합니다.

기본적으로 달성하려는 것은 암호 작성자가 NONCE (한 번 사용 된 번호)이라고 부르는 것입니다. 아이디어는 params를 사용하여 NONCE를 생성 한 다음 params가 변경되지 않았 음을 확인하는 것입니다.

이상적으로 이것은 무작위로 으로 소금을 칠해 한 번 사용하는 해시이어야합니다. 당신을 위해 그것을 돌볼 많은 도서관이 있습니다. 해시는 대칭 적이 지 않습니다. 즉 요청 변수의 해시를 해시하여 해시 값이 동일한 지 확인할 수 없습니다.

당신이 할 수있는 일은 매개 변수의 해쉬를 취하여 해시를 비교하는 것입니다. 소금이 없으면 무지개 껍질에 감염되기 쉽기 때문에 염분을 기억하는 것이 중요합니다. 당신은 당신이 당신은, 예를 들어,이 라이브러리에서 좀 걸릴 수 있습니다 http://fullthrottledevelopment.com/php-nonce-library 당신이 또한 워드 프레스에서 비표 생성 코드를 빌릴 수 모두 $_POST$_GET

에 대해 동일한 로직을 재사용 할 수 $_REQUEST 오히려 $_GET보다 사용하는 경우 또한