使用阿里云的 slb 之后如何防止有人在 X-FORWARDED-FOR 头伪造 IP, slb 会原样传递,导致的假的 ip。有大神知道怎么解决这个问题吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
如果你希望学习 CDN 相关知识,那么建议你可以遍历以下软件的说明文档。
NGINX
cURL
Jackyxiaoc
V2EX    CDN

使用阿里云的 slb 之后如何防止有人在 X-FORWARDED-FOR 头伪造 IP, slb 会原样传递,导致的假的 ip。有大神知道怎么解决这个问题吗?

  •  
  •   Jackyxiaoc 2019-04-22 22:54:52 +08:00 5984 次点击
    这是一个创建于 2416 天前的主题,其中的信息可能已经有所发展或是发生改变。
    使用阿里云的 slb 之后如何防止有人在 X-FORWARDED-FOR 头伪造 IP,slb 会原样传递,导致的假的 ip。
    伪造 ip 成本是不是特别低 emmm...
    15 条回复    2022-08-11 10:32:36 +08:00
    yimuyimu
        1
    yimuyimu  
       2019-04-22 23:12:50 +08:00 via Android
    其他云也会遇到这个问题阿。https 加双向证书的方案试试
    yidinghe
        2
    yidinghe  
       2019-04-22 23:16:37 +08:00 via Android
    提工单,问清楚就行了。
    Jackyxiaoc
        3
    Jackyxiaoc  
    OP
       2019-04-22 23:32:42 +08:00
    @yimuyimu 谢谢

    @yidinghe 工单两天了没解决方案
    leo108
        4
    leo108  
       2019-04-22 23:35:22 +08:00
    建议深入了解一下 XFF 头,不要随便搜一个所谓『获取真实访客 IP 』的代码就拿来用。

    简单一句话就是只信任来自可信反代的前一个 XFF 头。
    imdong
        5
    imdong  
       2019-04-22 23:40:00 +08:00
    网上能找到的获取客户端 IP 的代码,基本上都是 同一个。
    反正我开发 PHP 的,找到的代码全都是 N 年前的史前代码。
    并且,全都有 IP 伪造的风险。

    至于阿里,我使用 CDN 的时候,他是有一个 ALI_CDN_READ_REMOTE_IP 这个字段的

    自己看下,具体字段名我不记得,看下有没有。
    这个是无法被伪造的。
    auser
        6
    auser  
       2019-04-22 23:47:24 +08:00
    方案 1: 使用 TCP 监听,socket 层的地址就是客户端的真实 IP 地址。基于 TCP 三次握手,无法伪造。
    方案 2: 从请求头从拿 RemoteIp 字段。这个类似 5 楼所述,阿里云 CDN 设置的字段。
    opengps
        7
    opengps  
       2019-04-22 23:47:41 +08:00
    这个问题,好多 cdn 都有
    Livid
        8
    Livid  
    MOD
    PRO
       2019-04-22 23:50:15 +08:00   1
    1. 每一个 CDN 都会有自己用于实现这个目的的独特头部。
    2. 如果 CDN 支持部署边缘计算逻辑,那么可以自己写一些代码来更安全地实现这个。
    blless
        9
    blless  
       2019-04-23 00:18:56 +08:00 via Android
    多层代理会有多个 ip,只取最后一个就好,按楼上的说法,只有阿里这个负载均衡反代才是合法的,只要相信阿里这个就好
    moult
        10
    moult  
       2019-04-23 01:18:50 +08:00 via iPhone
    其实这问题无解。网站不得不无条件信任 XFF 头。因为在安卓的微信浏览器下面,所有的请求都会经过腾讯的服务器中转,中转之后,直接获取到的 IP 是腾讯服务器的 IP,只能信任 XFF 头来获取真实的用户 IP 地址。
    richard1122
        11
    richard1122  
       2019-04-23 07:03:04 +08:00
    前端时间研究过这个问题,XFF 头是依次增加 ip 的,不会丢弃掉以前的。

    你确认自己后端在一个可信的代理后面(比如自己部署的 nginx 或者云平台的网关)时,可以直接取最后一个。

    比如汤姆猫已经实现了这个逻辑,只需要配置一下,request 里面的 remote 地址就是正确的了。
    est
        12
    est  
       2019-04-23 07:53:22 +08:00 via Android
    还是我有解的。你自己请求也加一个 xff 然后如果数据对不上就是被搞了
    sadpencil
        13
    sadpencil  
       2021-01-26 06:46:38 +08:00
    @imdong 实际的字段名叫 HTTP_ALI_CDN_REAL_IP
    sadpencil
        14
    sadpencil  
       2021-01-26 06:47:25 +08:00
    上一条打错了,@imdong 实际的字段名叫 ALI_CDN_REAL_IP
    chinafengzhao
        15
    chinafengzhao  
       2022-08-11 10:32:36 +08:00
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4000 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 05:27 PVG 13:27 LAX 21:27 JFK 00:27
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86