当前位置: 首页 > 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

相关文章:

  • C++模板特化实战:在使用开源库boost::geometry::index::rtree时,用特化来让其支持自己的数据类型
  • 虚拟机安装Ubuntu 24.04服务器版(命令行版)
  • 软件测试面试2024最新热点问题
  • 【MySQL】数据库表连接简明解释
  • 【p2p、分布式,区块链笔记 DAM】GUN/SEA(Security, Encryption, Authorization) 模块genkey
  • 3DTiles之i3dm介绍
  • 中断上下文及抢占标志位的检查——基于调度及锁举例
  • 数据库常用语法总结
  • 鸿蒙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