Лучший способ сделать «свободную» проверку IP для защиты от перехвата сессии - PullRequest
1 голос
/ 05 июля 2011

Каков наилучший способ выполнить «свободную» проверку IP для защиты от перехвата сеанса, которая работает как для IPv4, так и для IPv6?Я получил массив, который сохраняет IP-адреса всех пользователей и сколько раз пользователь подключался с этого адреса:

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

Теперь я хочу выполнить свободную проверку IP и сравнить ее с $ _SERVER ['REMOTE_ADDR'].Если пользователь подключился только с 1 адреса, он должен предположить, что идентификатор сеанса был перехвачен.В то же время, если пользователь регулярно меняет IP-адрес с 82.34.24. * На 82.34.24. *, Должен ли он предполагать, что все нормально, но если пользователь неожиданно подключается с 82.34.33.0 или какого-либо адреса, которому он не принадлежиттот же IP-адрес группы или никогда не использовался ранее (к примеру, последние 20 запросов), если он предполагает перехват сеанса.

Каков наилучший способ реализовать это, использовать inet_pton / inet_nton, но как тогда?

1 Ответ

1 голос
/ 05 июля 2011

Вы можете сравнить сетевые маски.Это будет выглядеть примерно так:

$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.

...