阿里云使用 SLB 如何获取用户真实地址?
参考文档: https://help.aliyun.com/document_detail/54007.html
当用户正常请求的时候可以解析出真实的地址,已经对阿里云内部 IP 进行白名单验证。
但是,用户自行伪造 x-forwarded-for 的时候,那么用户真实 IP 的地址将会自动附加到最后面。
curl -H "X-Forwarded-For: 107.186.12.3, 102.37.36.6, 16.7.3.4" https://xxx.com
[HTTP_X_FORWARDED_FOR] => 107.186.12.3, 102.37.36.6, 16.7.3.4, 14.152.49.160
1
opengps 2018-11-23 16:56:47 +08:00
你自己都说了,最后的是真实 ip,那就写代码截取吧
|
2
odirus 2018-11-23 17:02:32 +08:00
从左到右找到第一个不是内网地址的 IP
|
3
xyjincan 2018-11-23 22:29:08 +08:00 via Android
,,,啥原理
|
4
ChristopherWu 2018-11-23 23:09:26 +08:00
@xyjincan 毛遂自荐,请参考我这篇文章: https://yonghaowu.github.io/2018/11/23/get_reql_ip/
|
5
ChoateYao OP @opengps 自行伪造的情况下面和正常请求根本没有办法区分。你张嘴就来取最后一个,将来出了问题,你们是要负责任的,明白吗?
|
6
C0reFast 2018-12-25 15:54:50 +08:00
使用 4 层负载均衡,直接拿 clientIp 就是用户发起 tcp 连接的那个真实客户端地址。
|