2011-07-05 1 views
1

IPv4 및 IPv6 모두에서 작동하는 세션 하이재킹에 대한 보호를 위해 '느슨한'IP 검사를 수행하는 가장 좋은 방법은 무엇입니까?세션 하이재킹에 대한 보호를 위해 '느슨한'IP 검사를 수행하는 가장 좋은 방법

$arr = array(ip_address => connected_times, ...); 

가 지금은 느슨한 IP 체크를하고 $ _SERVER [ 'REMOTE_ADDR']에 대해 비교 싶어 : 나는 사용자가 해당 주소에서 연결 한 모든 사용자의 IP 주소와 얼마나 많은 시간을 절약 할 수 배열을 얻었다. 사용자가 하나의 주소에서만 연결하면 세션 ID가 도용되었다고 가정해야합니다. 같은 시간에 사용자가 82.34.24. *에서 82.34.24. *로 정기적으로 IP 주소를 변경하면 모든 것이 정상이라고 가정해야하지만 사용자가 갑자기 82.34.33.0 또는 속하지 않는 일부 주소에서 연결하는 경우 동일한 IP 그룹 주소 또는 세션 하이재킹을 가정해야 이전에 사용 된 적이 없습니다 (예를 들어 마지막 20 개 요청).

이것을 구현하는 가장 좋은 방법은 inet_pton/inet_nton을 사용하는 것입니다. 그렇다면 어떻게해야합니까?

답변

1

넷 마스크를 비교할 수 있습니다.

$new_ip = '82.34.24.128'; 
$old_ip = '82.34.25.1'; 

$old = inet_pton($old_ip); 
$new = inet_pton($new_ipd); 

if (($num & 0xFFFFFF00) == ($old & 0xFFFFFF00)) { 
    ... identical /24 
} else { 
    ... hijacked? 
} 

물론,이 사용자가에서 오는 어떤 네트워크 것은/24 (이전 스타일의 클래스 C) 서브넷 있다고 가정합니다 : 그것은이 같은 갈 것입니다. 이것은 더 큰 네트워크 인 경우 IBM의 누군가와 같이/8 (구식 클래스 A)이있는 경우 실패합니다.이 경우 0xFF000000의 넷 마스크가 필요합니다.