当前位置: 首页 > article >正文

【网络安全】X-Forwarded-For漏洞成因及防范

文章目录

    • 获取客户端IP背景
    • 如何获取客户端 IP
    • IP 伪造
    • 防范 IP 伪造
      • 方法一:Nginx 配置
      • 方法二:Tomcat 的 RemoteIpValve
      • 方法三:Egg.js 的 maxProxyCount

获取客户端IP背景

分布式拒绝服务攻击(DDoS)和频繁请求的爬虫行为属于异常请求,通过分析 IP 地址可以检测出这些异常行为。

同时,在 Web 应用开发中,获取客户端 IP 地址也是常见的需求。例如,在投票系统中,为了防止刷票,需要限制每个 IP 地址只能投票一次,这就涉及到获取客户端真实 IP 的问题。

如何获取客户端 IP

在 Java 中,获取客户端 IP 最直接的方式是使用 request.getRemoteAddr()。该方法在没有代理的情况下,可以直接获取连接服务器的客户端 IP。但是如今的 Web 应用通常不会直接将应用服务器对外开放,一般会有 Nginx 作为反向代理和负载均衡,有的甚至有多层代理。在这种情况下,直接使用 request.getRemoteAddr() 获取的 IP 地址会是代理服务器的 IP,而非真实客户端的 IP。

原因是:HTTP 协议基于 TCP 协议,request.getRemoteAddr() 默认获取的是 TCP 层直接连接的 IP,对于应用服务器来说,直接连接的是代理服务器(如 Nginx)。

为了获取真实客户端 IP,很多代


http://www.kler.cn/a/392766.html

相关文章:

  • LeetCode - 初级算法 数组(删除排序数组中的重复项)
  • Microsoft word@【标题样式】应用不生效(主要表现为在导航窗格不显示)
  • 【YashanDB知识库】sys登录提示账户被锁,怎么处理?
  • shell学习变量(二)
  • 如何利用云计算进行灾难恢复?
  • 单片机的基本组成
  • 中断上下文及抢占标志位的检查——基于调度及锁举例
  • 数据库常用语法总结
  • 鸿蒙next版开发:相机开发-元数据(ArkTS)
  • SpringCloud篇(微服务)
  • [CKS] K8S AppArmor Set Up
  • AI 扩展开发者思维方式:以 SQL 查询优化为例
  • automa 浏览器自动化工具插件
  • 使用TaPas进行表格问答
  • 一文理解:结构化数据、非结构化数据、半结构化数据和元数据
  • 使用 start-local 脚本在本地运行 Elasticsearch
  • Pycharm打开终端时报错:Cannot open Local,Failed to start[powershell.exe]
  • 【论文复现】STM32设计的物联网智能鱼缸
  • 快速排序法
  • Macos mysql实现命令自动补全的方法
  • 7天用Go从零实现分布式缓存GeeCache(总结)
  • 目录树文件名映射深度1分组计数,tree(映射(目录A))
  • Mysql用户权限与账号管理
  • Conda环境、Ubuntu环境移植
  • Scala 的List
  • 【蓝桥等考C++真题】蓝桥杯等级考试C++组第13级L13真题原题(含答案)-成绩排序ABCDE