一部のアプリケーションは、特定のIPからの要求を受け入れることによってのみセキュリティを提供しています。これは、そのアプリを安全にするための良い方法ですか。リクエスト期間中にこのリファラーIPを操作する方法はありますか?
getRemoteAddr、getRemoteHost、およびgetRemotePort
リクエスト時に上記の値を設定する方法はありますか?
一部のアプリケーションは、特定のIPからの要求を受け入れることによってのみセキュリティを提供しています。これは、そのアプリを安全にするための良い方法ですか。リクエスト期間中にこのリファラーIPを操作する方法はありますか?
getRemoteAddr、getRemoteHost、およびgetRemotePort
リクエスト時に上記の値を設定する方法はありますか?
はい、パケットの送信元IPを「スプーフィング」して、要求が実際とは異なるIPアドレスからのものであるように見せかけることができます。ただし、IPアドレスがスプーフィングされている場合、TCPのスリーウェイハンドシェイクは完了しないため、これは問題ではありません。ただし、いくつかの例外があります(攻撃者がパケットをスニッフィングし、パケットがネットワークを通過するときに応答を生成するなど)。しかし、一般的に言えば、それを行うのは非常に困難です。
ただし、これは通常は信頼できるものですが、適切なセキュリティ対策ではありません。その理由は、IPアドレスは誰でも引き継ぐことができ、NATや防火壁などの技術によってパケットで頻繁に変更されるためです。
NATを使用する同じプライベートネットワーク上に2人のユーザーがいて、両方が同時にサーバーに要求を行う場合、サーバーはIPアドレスを同じものとして認識し、送信元ポートが異なることを考慮してください。ルーティングを適切に行うための差別化要因は、IPアドレスではなく、送信元ポートです。これをさらに信頼性の低いものにするために、送信元ポートは新しいリクエストごとに変更されます。これは、単一のHTTPセッション中に数十回発生する可能性があります。
そうは言っても、IPフィルタリングにはいくつかの利点があります。IPでフィルタリングすることにより、特定の国または地域の誰かが接続するのをはるかに困難にすることができます。これが唯一のセキュリティではありませんが、通常、異なる範囲から有効なIPアドレスを取得することは簡単ではないため、役立つ場合があります。たとえば、一部の組織は、デフォルトですべての非米国ベースのIPをブロックします。これは、ユーザーアカウントと組み合わせて使用されます。これにより、ローカル以外の攻撃者がサーバーに到達するのがはるかに困難になります。