亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如下圖,是我測試的一段代碼訪問一個IP查詢服務的服務,可以看出,可以任何偽造ip地址!

如下圖,是我測試的一段代碼訪問一個IP查詢服務的服務,可以看出,可以任何偽造ip地址!

PHP
小怪獸愛吃肉 2023-04-08 14:10:54
當前正在做的一個PHP項目,需要驗證用戶的IP地址是否在授權范圍中,請問有什么方法可以避免用戶偽造IP?或者,是否能提供一個其他思路?補充:實際場景為rest調用,調用和被調用端都為服務器~
查看完整描述

3 回答

?
慕勒3428872

TA貢獻1848條經驗 獲得超6個贊

提供幾個思路:

  1. 如果是局域網環境,那么建議你從系統上,甚至路由器上去限制IP

  2. 如果是公開的,偽造IP將無法收到你的Response,也就是說這個Response會發到那個被偽造的IP去。所以,除非是對你做泛洪攻擊,偽造IP沒有意義。

再說你評論的那個方案,其實是一種驗證的手段,我倒是覺得,這種手段和對稱加密沒什么兩樣,當然對稱加密成本要比你說的握手方式成本低很多。

總之,限制IP是為了做訪問限制,而為了數據安全,還是要做加密和身份驗證,對稱加密是個好辦法(對稱加密中加入時間等元素,安全性一般比較高)。


查看完整回答
反對 回復 2023-04-11
?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

"HTTP_" 開頭的$_SERVER很容易偽造.

服務段判斷還是挺容易的. 其實下面這個代碼也是判斷是否使用proxy.

<?php
    if (       $_SERVER['HTTP_X_FORWARDED_FOR']
       || $_SERVER['HTTP_X_FORWARDED']
       || $_SERVER['HTTP_FORWARDED_FOR']
       || $_SERVER['HTTP_CLIENT_IP']
       || $_SERVER['HTTP_VIA']
       || in_array($_SERVER['REMOTE_PORT'], array(8080,80,6588,8000,3128,553,554)))
       || @fsockopen($_SERVER['REMOTE_ADDR'], 80, $errno, $errstr, 30))
    {         
    echo "we caught you";
    } ?>

結論:服務段最好只取$_SERVER['REMOTE_ADDR']


查看完整回答
反對 回復 2023-04-11
?
吃雞游戲

TA貢獻1829條經驗 獲得超7個贊

"X-FORWARDED-FOR" 是代理服務器通過 HTTP Headers 提供的客戶端IP。代理服務器可以偽造任何IP。

要防止偽造,不要讀這個IP即可(同時告訴用戶不要用HTTP 代理)。

如果是PHP,$_SERVER['REMOTE_ADDR'] 就是跟你服務器直接連接的IP,用這個就可以了。


查看完整回答
反對 回復 2023-04-11
  • 3 回答
  • 0 關注
  • 151 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號