
1 yimuyimu 2019-04-22 23:12:50 +08:00 via Android 其他云也会遇到这个问题阿。https 加双向证书的方案试试 |
2 yidinghe 2019-04-22 23:16:37 +08:00 via Android 提工单,问清楚就行了。 |
3 Jackyxiaoc OP |
4 leo108 2019-04-22 23:35:22 +08:00 建议深入了解一下 XFF 头,不要随便搜一个所谓『获取真实访客 IP 』的代码就拿来用。 简单一句话就是只信任来自可信反代的前一个 XFF 头。 |
5 imdong 2019-04-22 23:40:00 +08:00 网上能找到的获取客户端 IP 的代码,基本上都是 同一个。 反正我开发 PHP 的,找到的代码全都是 N 年前的史前代码。 并且,全都有 IP 伪造的风险。 至于阿里,我使用 CDN 的时候,他是有一个 ALI_CDN_READ_REMOTE_IP 这个字段的 自己看下,具体字段名我不记得,看下有没有。 这个是无法被伪造的。 |
6 auser 2019-04-22 23:47:24 +08:00 方案 1: 使用 TCP 监听,socket 层的地址就是客户端的真实 IP 地址。基于 TCP 三次握手,无法伪造。 方案 2: 从请求头从拿 RemoteIp 字段。这个类似 5 楼所述,阿里云 CDN 设置的字段。 |
7 opengps 2019-04-22 23:47:41 +08:00 这个问题,好多 cdn 都有 |
8 Livid MOD PRO 1. 每一个 CDN 都会有自己用于实现这个目的的独特头部。 2. 如果 CDN 支持部署边缘计算逻辑,那么可以自己写一些代码来更安全地实现这个。 |
9 blless 2019-04-23 00:18:56 +08:00 via Android 多层代理会有多个 ip,只取最后一个就好,按楼上的说法,只有阿里这个负载均衡反代才是合法的,只要相信阿里这个就好 |
10 moult 2019-04-23 01:18:50 +08:00 via iPhone 其实这问题无解。网站不得不无条件信任 XFF 头。因为在安卓的微信浏览器下面,所有的请求都会经过腾讯的服务器中转,中转之后,直接获取到的 IP 是腾讯服务器的 IP,只能信任 XFF 头来获取真实的用户 IP 地址。 |
11 richard1122 2019-04-23 07:03:04 +08:00 前端时间研究过这个问题,XFF 头是依次增加 ip 的,不会丢弃掉以前的。 你确认自己后端在一个可信的代理后面(比如自己部署的 nginx 或者云平台的网关)时,可以直接取最后一个。 比如汤姆猫已经实现了这个逻辑,只需要配置一下,request 里面的 remote 地址就是正确的了。 |
12 est 2019-04-23 07:53:22 +08:00 via Android 还是我有解的。你自己请求也加一个 xff 然后如果数据对不上就是被搞了 |
14 sadpencil 2021-01-26 06:47:25 +08:00 上一条打错了,@imdong 实际的字段名叫 ALI_CDN_REAL_IP |
15 chinafengzhao 2022-08-11 10:32:36 +08:00 |