PHP でユーザーの IP アドレスを正確に決定する方法
はじめに
ユーザーの IP アドレスの取得PHP の正確な IP アドレスは、IP ベースに依存するアプリケーションにとって非常に重要です。地理位置情報、不正行為の検出、またはアクセス制御。ただし、プロキシ、ロード バランサー、その他のネットワーク構成を使用するため、正しい IP アドレスを抽出することが困難になる場合があります。
IP アドレス取得のベスト プラクティス
確実な方法はありません。最も正確なアプローチについては一般的なコンセンサスがあります。 PHP:
$_SERVER 変数の使用
PHP には、IP アドレスが含まれる可能性があるいくつかの $_SERVER 変数が用意されています情報:
検証信頼性
すべての $_SERVER 変数が同等に信頼できるわけではありません。多くの場合、HTTP_CLIENT_IP と REMOTE_ADDR が最も信頼性が高くなりますが、HTTP_X_FORWARDED_FOR は簡単にスプーフィングされる可能性があります。
正確な IP 取得のための最適化されたコード
次のコード スニペットは、次の点を考慮して最適化されています。関連するすべての $_SERVER変数:
function get_ip_address() { if (!empty($_SERVER['HTTP_CLIENT_IP']) && filter_var($_SERVER['HTTP_CLIENT_IP'], FILTER_VALIDATE_IP)) { return $_SERVER['HTTP_CLIENT_IP']; } if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $iplist = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); foreach ($iplist as $ip) { if (filter_var(trim($ip), FILTER_VALIDATE_IP)) { return $ip; } } } return $_SERVER['REMOTE_ADDR']; }
REMOTE_ADDR に関する資格
REMOTE_ADDR は一般に信頼性がありますが、依然としてスプーフィングの傾向があります。絶対的な IP 精度を必要とするアプリケーションの場合は、クライアント証明書や IP レピュテーション データベースの検査など、より厳格な検証方法の使用を検討してください。
その他の考慮事項
以上がPHP でユーザーの正確な IP アドレスを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。