2011-07-05 7 views
1

IPv4とIPv6の両方で機能するセッションハイジャックに対する保護のための「緩やかな」IPチェックを行う最良の方法は何ですか?セッションのハイジャックに対する防御のための「緩やかな」IPチェックを行う最良の方法

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

は、今私が緩んでIPチェックを行い、$ _SERVER [「REMOTE_ADDR」]に対してそれを比較したい操作を行います。私は、ユーザーがそのアドレスから接続しているすべてのユーザのIPアドレスとどのように多くの時間を節約し、配列を得ました。ユーザーが1つのアドレスからしか接続していない場合は、セッション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のネットマスクが必要です。