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 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
|