$ _SERVER [「REMOTE_ADDR」]のための可能な戻り値は何ですか;?
質問
ログインモジュールを書くことで、私はまだ他の側で同じ人物である他の側に誰検証するための追加措置としてIPのをログに記録します。
私は、リモートマシンのIPアドレスを取得する方法(多くの)一つとして$_SERVER['REMOTE_ADDR']
を使用しています。別にIPv4またはIPv6アドレスから、私はこれを返すことを期待すべきである他の値があるのですか?
解決
何も追加されたセキュリティは、これらを簡単に詐称することができ、POSTトランザクションを傍受されるのに十分精通だ誰もがおそらくとにかくこれをやっているように、IPアドレスを確認するには本当にありません。
また、あなたが潜在的に迷惑正当なユーザーであることがあります。人はいくつかの無料のオープンのWiFiホットスポットが存在する場所であってもよい場合を考えてみて。彼らはあなたのログインページに到達すると、彼らは1つのホットスポットに接続することができるが、それらはサインインの時間で、彼らのマシンは、別のルータがより良い選択肢であることを決定したことがあり、したがって、そのIPが変更されます。信じられないかもしれませんが、これはいくつかの簡単-挫折ユーザー(の非常にのいくつかの、とはいえ)を抑止することがあります。
正直なところ、私は気にしないでしょう。可能な場合は、SSLを使用して、通常、あなたが記述しているようなセキュリティ問題を回避するために行くための最善の方法です。あなたのプロジェクトで頑張ってます。
他のヒント
PHPのオンラインドキュメントによるIPアドレスのみが返されます。
http://us.php.net/manual/en /reserved.variables.server.phpする
「 'REMOTE_ADDR':
IPアドレスは、そこからユーザーが現在のページを見ている。」
の値は、IPv4またはIPv6アドレスであってもよいです。あなたはおそらく唯一の標準的な値は、IPアドレスは、いくつかの方法で書くことができることを認識してしまいますが。 192.0.2.1
が192.000.002.001
と同じである、2001:db8::1
は、ウェブサーバがIPv6ソケットにIPv4接続を受け入れる場合はIPv4アドレスが偶数2001:0db0:0000:0000:0000:0000:0000:0001
又は::ffff:192.0.2.1
などIPv6の表記法で書くことができる等、::ffff:c000:0201
と同じです。私は、Linuxシステム上で多くのことを見ます。
ロギングのIPアドレスは、限り、あなたは十分なスペースを確保して問題になることはありません。アクセス制御のために実際に使用したIPアドレスは、これらの日より多くのトリッキーになっています。世界の大部分は、新しいの不足しているためのIPv4を使用すると、ISPがIPv4インターネットに新しい顧客を結ぶ維持するために大規模にNATを使用する必要があることでしょう対処しています。これらの大規模NATは、顧客の多分何千ものためのパブリックIPv4アドレスのプールを使用します。一つのIPアドレスは、多くの顧客が使用することができ、そして一人の顧客がプールから別のアドレスを使用して終わるかもしれない。
IPv6ではIPアドレスを追跡することを考慮に入れるために他のものを持っています。オリジナルのIPv6自動設定機構は、IPv6アドレスの一部としてMACアドレスを使用することに基づきます。プライバシーのは、ほとんどのオペレーティングシステムに関係するので、今の発信接続のための(種類の)ランダムに生成されたインターフェイス識別子(アドレスの通常最後の64ビット)を使用し、それらのビットは/時間の経過とともに変化することができますすることができます。一部のオペレーティングシステム(Mac OS Xは)でもIPv4またはIPv6が高速であると私は、クライアントが機会にIPv4とIPv6の間で前後に切り替える見ているかどうかについての統計情報を保持します。
そして、あなたは、それによってIPアドレスを切り替え、別の無線ホットスポットやオフィスのネットワークからローミングユーザーを持つことができます。
だから私は、IPアドレスをログに記録することは、あなたがデータで何をしたいかに基づいて、意味をなすかもしれませんが、(の一部)として、アクセス制御のフォームを、それらを使用すると、それは価値があるよりも多くの問題を引き起こすかもしれないと思う。