blessing-skin-server
blessing-skin-server copied to clipboard
用户注册时 BS 无法正确处理 X-Forwarded-For 头部中有多个 IP 的情况
Blessing Skin 版本
commit 2dc2409 @ dev branch
PHP 版本
8.1
出现问题时所使用的浏览器
Microsoft Edge
您正在使用的 Web Server
Nginx
您正在使用宝塔吗?
- [ ] 是
出现了什么问题?
当 X-Forwarded-For
头部中含有多个 IP 地址时(如 1.1.1.1, 2.2.2.2, 3.3.3.3
),Blessing Skin 获取到的 IP 地址始终为最后一个(3.3.3.3
),但这是代理服务器的地址。这会导致用户注册 IP 被记录为 CDN 节点或反向代理服务器的 IP 地址。
根据 MDN,当 X-Forwarded-For 头部中含有多个 IP 地址时,第一个 IP 地址为客户端的 IP 地址(在上例中为 1.1.1.1
)。
错误日志
No response
重现步骤
架构为 Client -> CDN -> Reverse Proxy -> Origin
,源站获取到的 X-Forwarded-For
头部的值为 <client>, <cdn>
。
此时 client 发起注册并成功,数据库 users 表中该用户对应的 ip 字段的值为 CDN 节点的 IP 地址(<cdn>
)。