PHP 里用来获取客户端 IP 的变量有这些:

$_SERVER['HTTP_CLIENT_IP'] 这个头是有的,但是很少,不一定服务器都实现了。客户端可以伪造。(推荐学习:PHP编程从入门到精通)

$_SERVER['HTTP_X_FORWARDED_FOR'] 是有标准定义,用来识别经过 HTTP 代理后的客户端 IP 地址,格式:clientip,proxy1,proxy2。详细解释见 http://zh.wikipedia.org/wiki/X-Forwarded-F...。 客户端可以伪造。

$_SERVER['REMOTE_ADDR'] 是可靠的, 它是最后一个跟你的服务器握手的 IP,可能是用户的代理服务器,也可能是自己的反向代理。客户端不能伪造。

客户端可以伪造的参数必须过滤和验证!很多人以为 $_SERVER 变量里的东西都是可信的,其实并不不然,$_SERVER['HTTP_CLIENT_IP'] 和 $_SERVER['HTTP_X_FORWARDED_FOR'] 都来自客户端请求的 header 里面。

如果要严格获取用户真实 ip

在反爬虫,防刷票的时候,客户端可以伪造的东西,我们一律不信任,此为严格获取。

没有套 CDN,用户直连我们的 PHP 服务器

这种情况下用 tcp 层握手的 ip,$_SERVER['REMOTE_ADDR']

自建集群用 nginx 实现负载均衡的时候

这种情况下,PHP 应用服务器不能对外暴露,我们在 nginx 中实现获取真实 IP 再换发给 PHP 服务器。

location /{   proxy_set_header client-real-ip $remote_addr;}

client-real-ip 可以随意自己命名,我们将 tcp 层中跟 nginx 握手的 ip 转发给 PHP。

使用 CDN,从 PHP 服务器取源的时候

CDN 会转发客户端的握手 ip 过来,各家策略有差异,具体去查 CDN 的文档。

当然我们也可以把需要严格核查的业务绑一个二级域名,单独走我们自己的 nginx 服务器,避开 CDN。

php怎么识别真实ip的更多相关文章

  1. 如何查找在CDN下的真实ip

    今天去找了一下www.bilibili.tv的IP(为什么要这样子做见),发现www.bilibili.tv使用了CDN服务直接ping找不到其真实IP(实际上不用找也可以但就是想找一下). 那我们应 ...

  2. php获取用户真实IP和防刷机制

      一. 如何获取用户IP地址 public static function getClientIp() { if (getenv('HTTP_CLIENT_IP')) { $ip = getenv( ...

  3. haproxy + nginx + proxy protocol 获得客户真实IP方法

    公司网站架构为: 前面2台HA负载均衡,后面3台Nginx负载均衡反向代理,然后后面有N台WEB服务器 由于要统计IP,需要在WEB服务器日志里体现客户端真实IP 那么问题来了,通过HA代理的HTTP ...

  4. CloudFlare防护下的破绽:寻找真实IP的几条途径

    本文仅代表作者独立观点,本文提及的技术仅供安全研究和渗透测试用途 看Twitter发现CloudFlare总裁什么的最近很高调,北京.香港的跑着参加会议.发表演说什么的,CloudFlare似乎也没那 ...

  5. 使用BurpSuite的Collaborator查找.Onion隐藏服务的真实IP地址

    本文转载!!! 原文地址:http://www.4hou.com/technology/10367.html 翻译来自:http://digitalforensicstips.com/2017/11/ ...

  6. Java面试-如何获取客户端真实IP

    在进行一些小游戏开发时,我们经常比较关注的一个功能便是分享.针对分享,我们希望能根据各个城市或者地区,能有不同的分享文案,辨识地区的功能如果由服务器来完成的话,我们就需要知道客户端的真实IP.今天我们 ...

  7. Kubernets中获取客户端真实IP总结

    1. 导言 绝大多数业务场景都是需要知道客户端IP的 在k8s中运行的业务项目,如何获取到客户端真实IP? 本文总结了通行的2种方式 要答案的直接看方式一.方式二和总结 SEO 关键字 nginx i ...

  8. 绕过CDN获取服务器真实IP地址

    相关视频链接:(https://blog.sechelper.com/20220914/penetration-testing-guide/cdn-bypass) CDN(Content Delive ...

  9. 如何获取用户的真实IP

    在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了 Apache,Nagix等反向代理软件就不能获取到客户端的真实 ...

随机推荐

  1. 【RS】:论文《Neural Collaborative Filtering》的思路及模型框架

    [论文的思路] NCF 框架如上: 1.输入层:首先将输入的user.item表示为二值化的稀疏向量(用one-hot encoding) 2.嵌入层(embedding):将稀疏表示映射为稠密向量( ...

  2. apt-get命令使用

    1.apt-get命令 apt-get命令是Debian Linux发行版中的APT软件包管理工具,所有基于Debian的发行都使用这个包管理系统. (1)命令语法 apt-get(选项)(参数) ( ...

  3. ubuntu更改源为aliyun的源;ROS改为新加坡源

    在修改source.list前,最好先备份一份 sudo cp /etc/apt/sources.list /etc/apt/sources.list.old 执行命令打开source.list文件 ...

  4. centos中更新glibc库文件到2.17

    1 确保安装过gcc yum install gcc 2 获取glibc相关版本 wget http://ftp.gnu.org/pub/gnu/glibc/glibc-2.17.tar.xz 3 解 ...

  5. 给Go程序加入编译版本时间等信息

    先看效果 $./myapp -v GitCommitLog=d97d098e5bb4ad38a2a7968f273a256e10a0108f mod bininfo comment GitStatus ...

  6. (一)使用phantomjs将动态HTML页面生成图片

    因为工作需要,笔者需要将一个动态的HTML5页面生成图片,并将图片发送给用户. 其中难点在于怎样将动态H5生成图片 笔者翻阅资料后,决定使用phantomjs这个插件,关于这个插件的安装,非常简单,笔 ...

  7. rsyslog详解实战和避坑

    目标是要把线上环境的debug日志及集中化收集起来,一方面是方便开发调试:一方面是避免直接到线上环境查看,存在安全隐患. 常用可选方案: rsyslog发送端 + rsyslog接收端: 直接存在接收 ...

  8. 多态性   类(class)的四则运算

       我们知道c语言中可以整型数据或浮点型等做四则运算,而自己写的类也可做四则运算,是不是感觉奇怪,可以看以下代码是如何完成类之间的四则运算: #include "stdafx.h" ...

  9. 2019 竞网智赢java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.竞网智赢等公司offer,岗位是Java后端开发,因为发展原因最终选择去了竞网智赢,入职一年时间了,也成为了面 ...

  10. 关于银企直连中银行通信类 配置篇 EPIC_PROC

    简单介绍:SAP银行企业直连,英文全称:Electronic Payment Integration(For China),简称EPIC,是SAP中国为本地化的需求开发的一款产品,以银企直连为支撑,主 ...