Nginx 防止IP伪造,绕过IP限制

背景介绍

在使用Nginx时,需要将IP地址转发到后置应用中,往往需要增加配置

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

在后端程序通过读取请求头里的X-Forwarded-For来获取用户客户端IP。

java 复制代码
public String getRemortIP(HttpServletRequest request) { 
  if (request.getHeader("x-forwarded-for") == null) { 
    return request.getRemoteAddr(); 
  } 
  return request.getHeader("x-forwarded-for"); 
}

但是,这个X-Forwarded-For可以通过修改报文来伪造IP。

解决办法

Nginx中增加配置

proxy_set_header X-Real-IP $remote_addr; #让WEB取得原始请求IP

代码中取客户端IP

java 复制代码
String clientIp = request.getHeader("X-Real-IP");
相关推荐
zhuyasen2 小时前
Go 实战:在 Gin 基础上上构建一个生产级的动态反向代理
nginx·go·gin
☼←安于亥时→❦2 小时前
Linux 系统日志‘/var/log/syslog‘ 和 ‘/var/log/messages‘ 详解
linux
袁气满满~_~2 小时前
Ubuntu下配置PyTorch
linux·pytorch·ubuntu
倦王2 小时前
Linux看ip,改用户名字加权限,在单独用户下设置miniconda
linux·服务器·tcp/ip
少废话h2 小时前
Flume Kafka源与汇的topic覆盖问题解决
java·linux·kafka·flume
qq_2153978973 小时前
docker 管理工具 Portainer安装
运维·服务器·docker
凤凰战士芭比Q3 小时前
Docker安装与常用命令
linux·运维·docker·容器
华哥啊.3 小时前
服务器安装node_exporter监测cpu以及内存相关情况
运维·服务器
ASKED_20193 小时前
常用 Linux 命令大全(文件、网络、时间、进程、数据库、工具全覆盖)
linux·网络·数据库
yuejich3 小时前
命名规范snake_case
服务器·前端·数据库