首页 运维 Web技术 查看内容

nginx配置X-Forwarded-For 防止伪造ip

2021-9-10 10:07 3095 0

摘要: 网上常见nginx配置ip请求头  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;风险: 用户可以通过自己设置请求头来伪造ip,比如用户在发起http请求是自己测试请求头x-forwarded-for:192.168.0.151 ...
关键词: Forwarded 伪造 代理 proxy 外层 情况 反向 用户 header 请求

网上常见nginx配置ip请求头

  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

风险: 用户可以通过自己设置请求头来伪造ip,比如用户在发起http请求是自己测试请求头
x-forwarded-for:192.168.0.151。那么服务器通过x-forwarded-for获取到的第一个ip就是用户伪造的ip。

  防止伪造方案:

  情况1: 在只有1层nginx代理的情况下,设置nginx配置“proxy_set_header X-Forwarded-For $remote_addr;”。(此时$remote_addr获取的是用户的真是ip)

  情况2:在有多层反向代理的情况下,

1)设置“最外层”nginx配置和情况1一样“proxy_set_header X-Forwarded-For $remote_addr;”。

2)除了“最外层”之外的nginx配置“proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;”。

  这样就防止了用户通过伪造请求头来伪造真实ip。后台只需要从x-forwarded-for请求头中取出第一个ip就是用户的真实ip。后面如果有多个ip,就是反向代理的ip




同理:X-Real-IP也差不多。

     不同的是当只有1层nginx代理情况下只需配置“proxy_set_header X-Real-IP $remote_addr;”即可。

     当有多层反向代理时,只在最外层代理设置“proxy_set_header X-Real-IP $remote_addr;”,如果在非最外层设置,则获取到的是反向代理机器的ip

本文出处: https://www.toutiao.com/a7005883600964993571/
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部