ホームページ >バックエンド開発 >PHPチュートリアル >Web サイトの Web サーバー側でユーザー IP を本当に制限できるでしょうか?

Web サイトの Web サーバー側でユーザー IP を本当に制限できるでしょうか?

WBOY
WBOYオリジナル
2016-10-11 14:23:46933ブラウズ

先ほどnginxのアップストリーム転送と転送元IPの変更について質問させていただきましたが、アクセス要求元のIPは自由に変更できるため、Webサーバー上で取得するIPを完全に信頼できるわけではありません。ユーザーの実際の IP アドレスですか? それともこのパスは実際には不可能ですか?

返信内容:

先ほどnginxのアップストリーム転送と転送元IPの変更について質問させていただきましたが、アクセス要求元のIPは自由に変更できるため、Webサーバー上で取得するIPを完全に信頼できるわけではありません。ユーザーの実際の IP アドレスですか? それともこのパスは実際には不可能ですか?

nginx は [あなた] によって構築されましたか、それとも [禁止されたユーザー] によって構築されましたか?

HTTP_X_FORWARD_FOR は偽造できますが、REMOTE_ADDR は変更できません。

[禁止されたユーザー] によって構築された場合:
$_SERVER["REMOTE_ADDR"] を通じて nginx サーバーの IP を取得し、直接ブロックできます。

[あなたが] nginx を構築した場合:
ユーザーの IP は $_SERVER["HTTP_X_FORWARD_FOR"] を通じて取得できますが、偽造される可能性があります。

リーリー

最善の方法は、nginx が転送するときにプライベート HTTP ヘッダーを追加することです。何を偽る必要があるのか​​わかりません。

リーリー

さらに、アリババの WW で現在使用されているプロキシ プラットフォームの HL システムは、HTTP_X_FORWARD_FOR によって厳密にフィルタリングされていないため、慎重に構築されたリクエストが注入される可能性があります。 。 。 (現在は新しいバージョンが修正されています)


偽造に関しては、Linux/Unix/OSX を使用している場合は、組み込みのカールで行うことができます:

リーリー

フィルタリングしない場合、IP を通じてブラックリストに登録するか、バックグラウンドで IP 操作ログを記録するかを直接決定する機能が存在します:

リーリー

Web サイトの Web サーバー側でユーザー IP を本当に制限できるでしょうか?

nginx を構成するときに、proxy_set_header X-Forward-For $remote_addr 構成を追加できる計画を思いつきました。次に、$_SERVER["HTTP_X_FORWARD_FOR"] がユーザーの実際の IP を取得し、プログラム内で IP を制限します。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。