获取用户Ip地址通用方法与常见安全隐患(HTTP_X_FORWARDED_FOR)_PHP
这个来自一些项目中,获取用户Ip,进行用户操作行为的记录,是常见并且经常使用的。 一般朋友,都会看到如下通用获取IP地址方法。
复制代码 代码如下:
function getIP() {
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$realip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
$realip = $_SERVER['HTTP_CLIENT_IP'];
} else {
$realip = $_SERVER['REMOTE_ADDR'];
}
return $realip;
}
这个是网上常见获取,ip函数,用这些值获取IP,我们首先要弄清楚,这些数据是从那个地方传过来的。
IP获取来源
1.'REMOTE_ADDR' 是远端IP,默认来自tcp 连接是,客户端的Ip。可以说,它最准确,确定是,只会得到直接连服务器客户端IP。如果对方通过代理服务器上网,就发现。获取到的是代理服务器IP了。
如:a->b(proxy)->c ,如果c 通过'REMOTE_ADDR' ,只能获取到b的IP,获取不到a的IP了。
另外:该IP想篡改将很难实现,在传递知道生成php server值,都是直接生成的。
2.'HTTP_X_FORWARDED_FOR','HTTP_CLIENT_IP' 为了能在大型网络中,获取到最原始用户IP,或者代理IP地址。对HTTp协议进行扩展。定义了实体头。
HTTP_X_FORWARDED_FOR = clientip,proxy1,proxy2 所有IP用”,”分割。 HTTP_CLIENT_IP 在高级匿名代理中,这个代表了代理服务器IP。既然是http协议扩展一个实体头,并且这个值对于传入端是信任的,信任传入方按照规则格式输入的。以下以x_forword_for例子加以说明,正常情况下,这个值变化过程。

分析Bug风险点:
通过刚刚分析我们发现,其实这些变量,来自http请求的:x-forword-for字段,以及client-ip字段。 正常代理服务器,当然会按rfc规范来传入这些值。但是,当一个用户直接构造该x-forword-for值,发送给用户用户,那将会怎么样呢?
图(1)
第2步,修改x-forword-fox值,我们看看结果
第三步,我们再修改下看看会怎么样?
哈哈,看到上面结果没,x-forwarded-for不光可以自己设置值,而且可以设置任意格式值。 这样一来,好比就直接有一个可以写入任意值的字段。并且服务器直接读取,或者写入数据库,或者做显示。它将带来危险性,跟一般对入输入没有做任何过滤检测,之间操作数据源结果一样。 并且容易带来隐蔽性。
结论:上面getip函数,除了客户端可以任意伪造IP,并且可以传入任意格式IP。 这样结果会带来2大问题,其一,如果你设置某个页面,做IP限制。 对方可以容易修改IP不断请求该页面。 其二,这类数据你如果直接使用,将带来SQL注册,跨站攻击等漏洞。至于其一,可以在业务上面做限制,最好不采用IP限制。 对于其二,这类可以带来巨大网络风险。我们必须加以纠正。
需要对getip 进行修改,得到安全的getip函数。
这类问题,其实很容易出现,以前我就利用这个骗取了大量伪装投票。有它的隐蔽性,其实只要我们搞清楚了,某些值来龙去脉的话。理解了它的原理,修复该类bug将是非常容易。
题外话,做技术,有三步,先要会做,会解决;后要思考为什么要这么做,原因原理是什么;最后是怎么样做,有没有其它方法。多问问自己,你发现距离技术真理越来越近。你做事会越来越得心应手的!
作者:chengmo QQ:8292669

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











Xiaohonshu は、ユーザーが日常生活を共有したり、お気に入りの商品を見つけたりできる人気のソーシャル e コマース プラットフォームです。一部のユーザーは個人のプライバシーに敏感であり、オンライン プライバシーを保護するために自分の IP アドレスが小紅書に表示されないことを望んでいます。では、Xiaohongshu に IP アドレスが表示されないように設定するにはどうすればよいでしょうか?この記事ではこの質問に詳しく答えます。 1.XiaohongshuにIPアドレスが表示されないように設定するにはどうすればよいですか? 1.小紅書設定を変更します。小紅書アプリを開き、右下隅の「自分」をクリックしてパーソナルセンターに入ります。次に、アバターをクリックしてアカウント設定を入力します。アカウント設定で、「プライバシー設定」を見つけてクリックして入力します。ここで、IP アドレスの設定オプションが表示されます。これをオフにするだけです。 2. キャッシュのクリア:Xiaohongshu がエラーを表示する場合があります。

cmd を使用して LAN 上のすべての IP アドレスを表示する方法: 1. 「Win+R」ショートカット キーを押して「ファイル名を指定して実行」ウィンドウを開きます; 2. 「ファイル名を指定して実行」ウィンドウに「CMD」と入力した後、Enter キーを押します。 3. 開いている「コマンド」で「プロンプト」インターフェイスにコマンド「arp -a」を入力し、Enter キーを押します; 4. 返された結果から、ローカル LAN 内のすべてのコンピュータの IP アドレスを確認できます。マシンと通信します。

場合によっては、IP アドレスを手動で変更する必要がある場合がありますが、一部の Windows 10 ユーザーは、IP アドレスを設定した後に保存できないと報告しています。この状況を解決するにはどうすればよいですか?基本的にIPアドレスの入力ミスによりIPアドレスが保存されます。サブネットプレフィックスがサブネットマスクとともに書き込まれているか確認できます。そうであれば元に戻してください。変更後は正常に保存できます。 IPアドレス。 Windows 10 の IP アドレスを設定した後に保存できない問題を解決する方法: エラー画像は次のとおりです。エラー。図に示すように、これはサブネット マスクではなく、サブネット プレフィックス長です。上の図に示すように、多くのユーザーは実際にサブネット プレフィックスをサブネット マスクとして書き込みます。

Xiaomi 携帯電話の IP アドレスはどこですか? Xiaomi 携帯電話で IP アドレスを確認できますが、ほとんどのユーザーは IP アドレスを確認する場所がわかりません。次は、Xiaomi 携帯電話の IP アドレスを確認する方法に関するグラフィックチュートリアルです。編集者が携帯電話を持ってきましたので、興味のある方はぜひ見に来てください! Xiaomi 携帯電話の IP アドレスはどこですか? 1. まず Xiaomi 携帯電話の設定機能を開き、[マイ デバイス] を選択してクリックして入力します; 2. 次に、マイ デバイス機能ページで [すべてのパラメータ] サービスをクリックします; 3次に、[すべてのパラメータ] ページで、一番下にスライドして [ステータス情報] を選択します; 4. 最後に、ステータス情報インターフェイスで IP アドレスを確認できます。

Xianyu は非常に実用的な中古品取引プラットフォームです。ここではさまざまな商品を購入したり、自分の遊休アイテムを販売したりできます。住所を変更したい場合はどうすればよいですか?以下のエディターで見てみましょう! Xianyu IP アドレスを変更する方法を共有します。まず、Xianyu ソフトウェアを開きます。ホームページに入ると、左上隅に海鮮市場、推奨事項、住所、その他のオプションが表示されます。「アドレス」をクリックします。 2. 次に、住所ページで住所の横にある [下矢印] をクリックします; 3. 最後にクリックした後、都市選択ページで都市をクリックします。

ユーザーは自分の生活を共有し、自分の才能を披露し、Douyin を通じて全国、さらには世界中のネチズンと交流します。プライバシー保護や地理的制限などの理由で、Douyin の IP アドレスを変更したいユーザーもいます。では、Douyin IP アドレスはどのようにして位置を変更するのでしょうか? 1.Douyin IP アドレスの場所を変更するにはどうすればよいですか?プロキシ サーバーは、ユーザーの要求をインターネットに転送し、応答を返すために使用される仲介サービスです。プロキシ サーバーを構成することにより、ユーザーは実際の IP アドレスを隠したり、IP アドレスを変更したりできます。このアプローチは、ユーザーのプライバシーを保護し、ネットワークのセキュリティを向上させるのに役立ちます。プロキシ サーバーを使用して、制限されたコンテンツにアクセスしたり、地理位置情報の制限を回避したりすることもできます。全体として、プロキシ サーバーの使用は、ユーザーがインターネットをより安全かつ自由に閲覧できるようにする実用的なネットワーク ツールです。

IP アドレスは 32 ビットまたは 128 ビットの 2 進数で構成されます。 IP アドレスは、IP プロトコルによって提供される統一アドレス形式で、次の 2 種類があります: 1. IPv4 アドレス: 32 ビットの 2 進数をドット付き 10 進表記で 8 ビット、つまり 4 ビットに分割して構成されます。 0~255 10 進数; 2. IPv6 アドレスは、ドット付き 16 進数で表される 128 ビットの 2 進数を 8 ビット、つまり 0x00 から 0xff までの 16 個の 16 進数に分割して構成されます。

各ホストには、「IP アドレス」と呼ばれる固有のアドレス識別子があります。 IP アドレスは、IP プロトコルによって提供される統一されたアドレス形式であり、物理アドレスの違いを防ぐために、インターネット上の各ネットワークおよび各ホストに固有の論理アドレスを割り当てます。この一意のアドレスにより、ユーザーは接続されたコンピュータ上で操作する際に、数千台のコンピュータから必要なオブジェクトを効率的かつ便利に選択できるようになります。
