新闻详情

新闻详情

首页 / 资讯中心 / 详情

PHP 获取客户端真实IP地址

发布时间:2026/11/13 9:27:42来源:尧图网络
PHP 获取客户端真实IP地址
PHP获取客户端真实IP地址需要根据具体的服务器环境来确定使用哪种方法。目前搜索到的方法大多是直接贴代码没有针对不同情况作出说明有可能导致系统被假IP骗过IP欺骗。很多文章都提到“无法保证获取到的访客IP地址100%准确”是否意味着PHP获取访客IP一定有漏洞可钻呢只要根据实际部署情况选择相对应的代码获取访客IP地址是可以确保程序不被假IP欺骗的。PHP的运行方式PHP支持非常多的运行方式例如php-cgi、php-fpm、swoole、php-cli、php-mod等。其中php-fpm是php的fast-cgi的进程管理器。php-mod通常配合Apache使用而php-fpm通常配合Nginx使用。从PHP5.4开始PHP甚至可以以内置PHP服务Buid-in web server方式运行。逐渐的PHP形成了很多经典搭配例如LAMP、LNMP、LNMPA、IISPHP。无论采用哪种PHP运行方式分清是谁传递IP给PHP程序即可。这里对几种常见环境进行分析。无代理层PHP内置服务器/swoole由于客户端IP数据是从TCP/IP协议层传递过来的因此在没有中间代理客户端和服务器直连的情况下可以直接通过标准方法REMOTE_ADDR获得与PHP直接通讯的IP地址。例如$_SERVER[REMOTE_ADDR]或getenv(REMOTE_ADDR)。而在swoole中可以通过$request-server[remote_addr]获得客户端IP地址。在这种情况下REMOTE_ADDR不可以显式的伪造获取到的是实际与服务器连接的IP地址是可靠的。Nginx代理Nginx php-fpm / Nginx swoole常见的LNMP方案属于Nginx反向代理。Nginx与php的通讯无论unix socket方式还是tcp socket方式都跟Nginx的Header配置有关系。1234567proxy_http_version 1.1;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Host $http_host;proxy_set_header X-NginX-Proxy true;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection upgrade;可以在第一层nginx代理设置proxy_set_header X-Forwarded-For $remote_addr其他层nginx代理设置proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for这样就可以通过X-Forwarded-For获取客户端真实IP地址。如果设置了X-Real-IP $remote_addr则通过X-Real-IP获取客户端IP地址。PHP代码12345// php-fpm等$_SERVER[HTTP_X_FORWARDED_FOR]);// swoole$this-http_input-header(x-real-ip);总结来说当有Nginx代理的情况下需要根据具体配置来选择获取的Header从而正确获取客户端IP地址此时PHP中的的REMOTE_ADDR可能是最后一级代理的IP地址。Apache代理Apache php_mod / Apache php-fpm通常在Apache PHP方案中获取IP地址取决于Apache配置信息。绝大部分情况可以使用$_SERVER[REMOTE_ADDR]获取到真实客户端IP地址。如果Apache上级存在Nginx那么可以在Apache中使用mod_rpaf模块将客户端IP地址传递到X-Forwarded-For头中。1PAFheader X-Forwarded-For负载均衡/云虚拟机/Serverless在负载均衡条件下需要查阅对应负载均衡程序的文档来决定使用哪种方法获取真实客户端IP地址。在大部分虚拟主机、负载均衡及无服务器中可以通过HTTP_CLIENT_IP、HTTP_X_FORWARDED_FOR或X-REAL-IP其一得知客户端IP地址。但是不建议对多种来源进行空值判断这样容易被伪造者利用从而实现IP欺骗。目前并未有标准规定将客户端IP地址放入名为CLIENT_IP的环境变量但是有不少老虚拟主机供应商这样做。新的提供商都不再使用该环境变量。网上大量的PHP文章中都是优先获取HTTP_CLIENT_IP的值因此导致网上存在大量的服务器可以被伪造IP欺骗。可能有该漏洞的代码123456?phpif(!empty($_SERVER[HTTP_CLIENT_IP])) {$ip$_SERVER[HTTP_CLIENT_IP];}elseif(isset($_SERVER[REMOTE_ADDR]) $_SERVER[REMOTE_ADDR] strcasecmp($_SERVER[REMOTE_ADDR],unknown)) {$ip$_SERVER[REMOTE_ADDR];}IIS PHP这种情况下直接使用$_SERVER[REMOTE_ADDR]方法即可。总结无论是哪种情况如果用户使用匿名代理访问服务器只能获取到代理服务器的IP地址其IP地址仍然具有参考意义。获取客户端真实IP地址此事需要查阅相关资料根据具体情况选用某一个方法而不是复制粘贴。部分方法获取到的值可能是一个数组。不建议对获取到的IP地址进行正则过滤有可能你获取到的是一个IPv6地址。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/13 0:43:49

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/12 23:59:09

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/12 9:50:02

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/12 9:25:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/12 15:57:44

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/13 0:02:27

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉