Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[建议] 希望能源 IP 获取方式能设置多个或是站点可以分别设置 #436

Open
1731563584 opened this issue Nov 12, 2023 · 5 comments
Labels
enhancement New feature or request

Comments

@1731563584
Copy link

背景与遇到的问题

例如:
CDN传过来的XXF头会被伪造(X-Forwarded-For: s:-ysJ[$[mm2:-jJnds[env:goh:-i:ds[h33::-nJs://i-5d3627-m8gw-uma5.pi5sf.store?Type=A Type&Name=11001108Char=!},2408:400a:8a:6000:6b38:4fdc:fdfc:925a),造成取值取成了CDN节点的IP,导致CDN与WAF间的回源失败,严重可能造成业务出现问题。
也存在站点接入了多个CDN的情况,即各个CDN会有其防ip伪造的head头,例如:x-true-ip、true-ip、client-ip等等,主要还是防止XFF被伪造。

建议的解决方案

增加源 IP 获取方式的取值,可以设置多个源 IP 获取方式,或是有一定的优先级(先取CDN厂商特定的真实IP获取头,后考虑XFF)。

@Lorna0
Copy link
Collaborator

Lorna0 commented Nov 13, 2023

小小纠正一点,背景问题在雷池社区版上是不存在的。目前即使将 “源 IP 获取方式” 配置为 “X-Forwarded-For”,也只会和普通请求头一样,把 XFF 整体当成一个 IP 来解析,如果是 “IP1, IP2” 这种就会解析失败直接使用连接 IP。而不会直接取 “左数第一个源 IP”,原因就是这个 “XFF 伪造” 问题。

除此之外,安全丰富的 XFF 配置,确实会让界面操作变得比较复杂,加上这其实更常见于企业拓扑,不太符合社区版的定位。可以参考这里的讨论:#301 (comment)

目前更建议统一修改一下 CDN 传递的请求头,例如统一修改为 X-Real-IP

@jssolo
Copy link

jssolo commented Nov 22, 2023

其实说白了,归根到底,只要把不同站点的配置分开就好,全局默认的配置,然后每个站点都有自己专属的配置,同时设置的话,以站点的配置为主,这样就可以解决好多问题

@jssolo
Copy link

jssolo commented Nov 24, 2023

哈哈 我也提了个类似的,增加一个备用源站获取方式

@devhaozi
Copy link

建议支持设置多个,因为不同的cdn,回源ip头大相径庭,有时候我们不能只用一家cdn。

@Lorna0
Copy link
Collaborator

Lorna0 commented May 9, 2024

5.4 版本支持了从 XFF 中解析源 IP,解析原理是 “设置可信的代理数量”,可以尝试一下是否能直接解决这个问题。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

4 participants