ホームページ バックエンド開発 PHPの問題 PHPで実際のIPを特定する方法

PHPで実際のIPを特定する方法

Sep 12, 2019 am 11:06 AM
php

PHP でクライアント IP を取得するために使用される変数は次のとおりです:

PHPで実際のIPを特定する方法

##$_SERVER['HTTP_CLIENT_IP'] これヘッダーは存在しますが、それはまれであり、必ずしもすべてのサーバーで実装されているわけではありません。クライアントは偽装される可能性があります。 (推奨学習:

PHP プログラミングの入門から習熟まで )

$_SERVER['HTTP_X_FORWARDED_FOR'] は、HTTP プロキシ後のクライアント IP アドレスを識別するために使用される標準定義です。形式: clientip,proxy1 、プロキシ2。詳細な説明については、http://zh.wikipedia.org/wiki/X-Forwarded-F... を参照してください。クライアントは偽装される可能性があります。

$_SERVER['REMOTE_ADDR'] は信頼できます。これはサーバーと握手する最後の IP です。ユーザーのプロキシ サーバーまたは独自のリバース プロキシである可能性があります。クライアントは偽造できません。

クライアントが偽造できるパラメータはフィルタリングして検証する必要があります。多くの人は $_SERVER 変数の内容が信頼できると考えていますが、実際にはそうではありません。$_SERVER['HTTP_CLIENT_IP'] と $_SERVER['HTTP_X_FORWARDED_FOR'] は両方ともクライアント リクエストのヘッダーから取得されます。

ユーザーの実際の IP を厳密に取得したい場合は、

アンチクローラーやアンチ投票が使用されている場合、クライアントが偽造できるものは何も信頼しません。これは厳密に取得されています。

CDN はなく、ユーザーは PHP サーバーに直接接続します

この場合、TCP 層ハンドシェイクの IP、$_SERVER['REMOTE_ADDR']## を使用します。 #nginx を使用して自作クラスターで負荷分散を実装する場合

この場合、PHP アプリケーション サーバーを外部に公開することはできません。実際の IP を取得します。 nginx でそれを PHP サーバーに送信します。

location /{
   proxy_set_header client-real-ip $remote_addr;
}
ログイン後にコピー
client-real-ip 自分で名前を付けることができ、nginx とシェイクハンドする tcp 層の ip を PHP に転送します。

CDN を使用する場合、PHP サーバーからソースを取得するときに、

CDN はクライアントのハンドシェイク IP を転送します。各社のポリシーが異なります。詳細については、CDN のドキュメントを確認してください。

もちろん、厳密な検証が必要なビジネスを第 2 レベルのドメイン名に関連付け、独自の nginx サーバーを個別に使用して CDN を回避することもできます。

以上がPHPで実際のIPを特定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

See all articles