1

IPv4 と IPv6 の両方で機能する、セッション ハイジャックに対する保護のための「緩い」IP チェックを行う最善の方法は何ですか? すべてのユーザーの IP アドレスと、ユーザーがそのアドレスから接続した回数を保存する配列を取得しました。

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

ここで、緩い IP チェックを行い、それを $_SERVER['REMOTE_ADDR'] と比較します。ユーザーが 1 つのアドレスからしか接続していない場合、セッション ID がハイジャックされたと想定する必要があります。同時に、ユーザーが IP アドレスを 82.34.24.* から 82.34.24.* に定期的に変更した場合、すべてが正常であると想定する必要がありますが、ユーザーが突然 82.34.33.0 または属していないアドレスから接続した場合セッションハイジャックを想定した場合、同じ IP グループアドレスまたは以前に使用されたことがない (たとえば、最後の 20 件のリクエスト)。

inet_pton/inet_nton を使用してこれを実装する最善の方法は何ですか?

4

1 に答える 1

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) サブネットであることを前提としています。/8 (古いスタイルのクラス A) を持つ IBM の誰かのような大規模なネットワークの場合、これは失敗します。その場合、0xFF000000 のネットマスクが必要になります。

于 2011-07-05T15:49:13.097 に答える