首頁 後端開發 php教程 获取用户Ip地址通用方法与常见安全隐患(HTTP_X_FORWARDED_FOR)_PHP

获取用户Ip地址通用方法与常见安全隐患(HTTP_X_FORWARDED_FOR)_PHP

Jun 01, 2016 pm 12:07 PM
ip位址

分析过程
这个来自一些项目中,获取用户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例子加以说明,正常情况下,这个值变化过程。

image


分析Bug风险点:

通过刚刚分析我们发现,其实这些变量,来自http请求的:x-forword-for字段,以及client-ip字段。 正常代理服务器,当然会按rfc规范来传入这些值。但是,当一个用户直接构造该x-forword-for值,发送给用户用户,那将会怎么样呢?

image图(1)

第2步,修改x-forword-fox值,我们看看结果

image

 

第三步,我们再修改下看看会怎么样?

image

 

哈哈,看到上面结果没,x-forwarded-for不光可以自己设置值,而且可以设置任意格式值。 这样一来,好比就直接有一个可以写入任意值的字段。并且服务器直接读取,或者写入数据库,或者做显示。它将带来危险性,跟一般对入输入没有做任何过滤检测,之间操作数据源结果一样。 并且容易带来隐蔽性。

结论:

上面getip函数,除了客户端可以任意伪造IP,并且可以传入任意格式IP。 这样结果会带来2大问题,其一,如果你设置某个页面,做IP限制。 对方可以容易修改IP不断请求该页面。 其二,这类数据你如果直接使用,将带来SQL注册,跨站攻击等漏洞。至于其一,可以在业务上面做限制,最好不采用IP限制。 对于其二,这类可以带来巨大网络风险。我们必须加以纠正。

需要对getip 进行修改,得到安全的getip函数。

这类问题,其实很容易出现,以前我就利用这个骗取了大量伪装投票。有它的隐蔽性,其实只要我们搞清楚了,某些值来龙去脉的话。理解了它的原理,修复该类bug将是非常容易。

题外话,做技术,有三步,先要会做,会解决;后要思考为什么要这么做,原因原理是什么;最后是怎么样做,有没有其它方法。多问问自己,你发现距离技术真理越来越近。你做事会越来越得心应手的!

作者:chengmo QQ:8292669

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1317
25
PHP教程
1268
29
C# 教程
1246
24
小紅書如何設定不顯示ip位址?它怎麼改id定位城市? 小紅書如何設定不顯示ip位址?它怎麼改id定位城市? Mar 27, 2024 pm 03:00 PM

小紅書作為一款流行的社交電商平台,用戶可以在這裡分享生活點滴、發現心儀商品。有些用戶對個人隱私較為敏感,希望在小紅書上不顯示IP位址,以保護自己的網路隱私。那麼,小紅書要如何設定不顯示IP位址呢?本文將圍繞此問題進行詳細解答。一、小紅書如何設定不顯示ip位址? 1.修改小紅書設定:開啟小紅書APP,點選右下角的“我”,進入個人中心。然後點選頭像,進入帳號設定。在帳號設定中,找到“隱私設定”,點擊進入。在這裡,你可以找到關於IP位址的設定選項,將其關閉即可。 2.清除快取:有時候,小紅書可能會顯示錯誤

cmd怎麼查看區域網路所有ip cmd怎麼查看區域網路所有ip Feb 20, 2023 pm 02:22 PM

cmd查看區域網路所有ip的方法:1、按「Win+R」快速鍵開啟「執行」視窗;2、在「執行」視窗中輸入「CMD」後,按回車鍵;3、在開啟的「指令提示符號」介面中,輸入指令「arp -a」並按下回車鍵;4、從回傳結果就可以看到本地區域網路中的所有與本機通訊的電腦IP位址。

windows10ip位址設定後無法儲存怎麼解決 windows10ip位址設定後無法儲存怎麼解決 Jul 08, 2023 pm 12:33 PM

有時大家會遇到必須手動修改ip位址的現象,但有的windows10客戶體現ip位址設定後無法儲存,像這種情況該怎麼解決呢?會有ip位址儲存基本上只因為你的ip位址填好存有錯誤,你可以檢查一下是否把子網前綴給寫出子網掩碼了,如果是的話就改回來,改完之後就可正常儲存ip位址了。 windows10ip位址設定後無法儲存怎麼解決:錯誤圖如下:填好錯誤了造成的提示“無法保存ip設置,請檢查一個或多個設定並舉試”,這裡是子網前綴長短,並非子網路掩碼,如圖所示。如上圖,其實是很多用戶把子網路前綴給寫出子網路遮罩了。

小米手機ip位址在哪裡 小米手機ip位址在哪裡 Feb 29, 2024 pm 06:10 PM

小米手機ip地址在哪裡?在小米手機中是可以查詢到ip地址,但是多數的用戶不知道ip地址在哪裡查詢,接下來就是小編為用戶帶來的小米手機ip地址查看方法圖文教程,有興趣用戶快來一起看看吧!小米手機ip位址在哪裡1、先開啟小米手機中的設定功能,選擇【我的裝置】點選進入;2、然後在我的裝置功能頁,點選【全部參數】服務;3、接著在全部參數頁面,滑到底部選擇【狀態資訊】;4、最後在狀態資訊介面即可看到ip位址。

閒魚在哪修改ip位址_閒魚ip位址修改方法分享 閒魚在哪修改ip位址_閒魚ip位址修改方法分享 Mar 20, 2024 pm 05:06 PM

閒魚是個很實用的二手交易平台,在這裡我們可以購買很多不同的商品,也能出售自己的閒置物品,如果想修改自己的地址怎麼操作呢?下面就來跟小編一起看看吧!閒魚ip位址修改法分享先打開閒魚軟體,進入首頁後,在左上角可以看到海鮮市場、推薦、地址等選項,點選「地址」。 2、然後在地址的頁面中我們點擊地址旁邊的【向下箭頭】;3、最後點擊過後在選擇城市的頁面中我們點擊城市即可;

抖音IP位址怎麼變位置? IP位址變位置是什麼原因? 抖音IP位址怎麼變位置? IP位址變位置是什麼原因? Mar 21, 2024 pm 06:30 PM

用戶透過抖音分享生活、展示才藝,與全國乃至全球的網友互動。有些用戶出於隱私保護或地理限制等原因,希望改變自己在抖音上的IP位址。那麼,抖音IP位址怎麼變位置呢?一、抖音IP位址怎麼變位置?代理伺服器是一種用於將使用者請求轉發到網際網路並回傳回應的中介服務。透過設定代理伺服器,使用者可以隱藏其真實IP位址,實現IP位址的變更。這種方式有助於保護用戶的隱私並提高網路安全性。代理伺服器也可用於存取受限內容或繞過地理位置限制。總的來說,使用代理伺服器是一種實用的網路工具,可以幫助使用者更安全、更自由地瀏覽互聯

ip位址是由多少位二進位數組成 ip位址是由多少位二進位數組成 Mar 01, 2023 pm 04:35 PM

ip位址是由32或128位元二進位數組成。 IP位址是IP協定提供的一種統一的位址格式,IP位址分兩種:1、ipv4位址,由32位元二進位數組成,用點分十進位表示,每八位元劃分,也就是四個0~255的十進位數;2、ipv6位址,由128位元二進位數組成,以點分十六進位表示,每八位元劃分,也就是十六個0x00~0xff的十六進位數。

在因特網上的每一台主機都有唯一的位址識別稱為什麼 在因特網上的每一台主機都有唯一的位址識別稱為什麼 Aug 22, 2022 pm 03:24 PM

每一台主機都有唯一的位址識別稱為「IP位址」。 IP位址是IP協定提供的一種統一的位址格式,它為網際網路上的每一個網路和每一台主機分配一個唯一的邏輯位址,以此來封鎖實體位址的差異。由於有這種唯一的位址,才保證了使用者在連網的電腦上操作時,能夠有效率且方便地從千千萬萬台電腦中選出自己所需的物件來。

See all articles