比特派官方下载安装|xff

作者: 比特派官方下载安装
2024-03-07 22:07:31

HTTP X-Forwarded-For 介绍 | 菜鸟教程

HTTP X-Forwarded-For 介绍 | 菜鸟教程

菜鸟教程 -- 学的不仅是技术,更是梦想!

首页

笔记首页

Android

ES6 教程

排序算法

Hadoop

Zookeeper

Verilog

编程技术

程序员人生

首页

Android

ES6

逗乐

Search

HTTP X-Forwarded-For 介绍 分类 编程技术

X-Forwarded-For 是一个 HTTP 扩展头部。HTTP/1.1(RFC 2616)协议并没有对它的定义,它最开始是由 Squid 这个缓存代理软件引入,用来表示 HTTP 请求端真实 IP。如今它已经成为事实上的标准,被各大 HTTP 代理、负载均衡等转发服务广泛使用,并被写入 RFC 7239(Forwarded HTTP Extension)标准之中。

X-Forwarded-For 请求头格式非常简单,就这样:

X-Forwarded-For: client, proxy1, proxy2

可以看到,XFF 的内容由「英文逗号 + 空格」隔开的多个部分组成,最开始的是离服务端最远的设备 IP,然后是每一级代理设备的 IP。

如果一个 HTTP 请求到达服务器之前,经过了三个代理 Proxy1、Proxy2、Proxy3,IP 分别为 IP1、IP2、IP3,用户真实 IP 为 IP0,那么按照 XFF 标准,服务端最终会收到以下信息:

X-Forwarded-For: IP0, IP1, IP2

Proxy3 直连服务器,它会给 XFF 追加 IP2,表示它是在帮 Proxy2 转发请求。列表中并没有 IP3,IP3 可以在服务端通过 Remote Address 字段获得。我们知道 HTTP 连接基于 TCP 连接,HTTP 协议中没有 IP 的概念,Remote Address 来自 TCP 连接,表示与服务端建立 TCP 连接的设备 IP,在这个例子里就是 IP3。

Remote Address 无法伪造,因为建立 TCP 连接需要三次握手,如果伪造了源 IP,无法建立 TCP 连接,更不会有后面的 HTTP 请求。不同语言获取 Remote Address 的方式不一样,例如 php 是 $_SERVER["REMOTE_ADDR"],Node.js 是 req.connection.remoteAddress,但原理都一样。

问题

有了上面的背景知识,开始说问题。我用 Node.js 写了一个最简单的 Web Server 用于测试。HTTP 协议跟语言无关,这里用 Node.js 只是为了方便演示,换成任何其他语言都可以得到相同结论。另外本文用 Nginx 也是一样的道理,如果有兴趣,换成 Apache 或其他 Web Server 也一样。

下面这段代码会监听 9009 端口,并在收到 HTTP 请求后,输出一些信息:

var http = require('http');

http.createServer(function (req, res) {

res.writeHead(200, {'Content-Type': 'text/plain'});

res.write('remoteAddress: ' + req.connection.remoteAddress + '\n');

res.write('x-forwarded-for: ' + req.headers['x-forwarded-for'] + '\n');

res.write('x-real-ip: ' + req.headers['x-real-ip'] + '\n');

res.end();

}).listen(9009, '0.0.0.0');

这段代码除了前面介绍过的 Remote Address 和 X-Forwarded-For,还有一个 X-Real-IP,这又是一个自定义头部字段。X-Real-IP 通常被 HTTP 代理用来表示与它产生 TCP 连接的设备 IP,这个设备可能是其他代理,也可能是真正的请求端。需要注意的是,X-Real-IP 目前并不属于任何标准,代理和 Web 应用之间可以约定用任何自定义头来传递这个信息。

现在可以用域名 + 端口号直接访问这个 Node.js 服务,再配一个 Nginx 反向代理:

location / {

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header Host $http_host;

proxy_set_header X-NginX-Proxy true;

proxy_pass http://127.0.0.1:9009/;

proxy_redirect off;

}

我的 Nginx 监听 80 端口,所以不带端口就可以访问 Nginx 转发过的服务。

测试直接访问 Node 服务:

curl http://t1.imququ.com:9009/

remoteAddress: 114.248.238.236

x-forwarded-for: undefined

x-real-ip: undefined

由于我的电脑直接连接了 Node.js 服务,Remote Address 就是我的 IP。同时我并未指定额外的自定义头,所以后两个字段都是 undefined。

再来访问 Nginx 转发过的服务:

curl http://t1.imququ.com/

remoteAddress: 127.0.0.1

x-forwarded-for: 114.248.238.236

x-real-ip: 114.248.238.236

这一次,我的电脑是通过 Nginx 访问 Node.js 服务,得到的 Remote Address 实际上是 Nginx 的本地 IP。而前面 Nginx 配置中的这两行起作用了,为请求额外增加了两个自定义头:

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

实际上,在生产环境中部署 Web 应用,一般都采用上面第二种方式,有很多好处。但这就引入一个隐患:很多 Web 应用为了获取用户真正的 IP,从 HTTP 请求头中获取 IP。

HTTP 请求头可以随意构造,我们通过 curl 的 -H 参数构造 X-Forwarded-For 和 X-Real-IP,再来测试一把。

直接访问 Node.js 服务:

curl http://t1.imququ.com:9009/ -H 'X-Forwarded-For: 1.1.1.1' -H 'X-Real-IP: 2.2.2.2'

remoteAddress: 114.248.238.236

x-forwarded-for: 1.1.1.1

x-real-ip: 2.2.2.2

对于 Web 应用来说,X-Forwarded-For 和 X-Real-IP 就是两个普通的请求头,自然就不做任何处理原样输出了。这说明,对于直连部署方式,除了从 TCP 连接中得到的 Remote Address 之外,请求头中携带的 IP 信息都不能信。

访问 Nginx 转发过的服务:

curl http://t1.imququ.com/ -H 'X-Forwarded-For: 1.1.1.1' -H 'X-Real-IP: 2.2.2.2'

remoteAddress: 127.0.0.1

x-forwarded-for: 1.1.1.1, 114.248.238.236

x-real-ip: 114.248.238.236

这一次,Nginx 会在 X-Forwarded-For 后追加我的 IP;并用我的 IP 覆盖 X-Real-IP 请求头。这说明,有了 Nginx 的加工,X-Forwarded-For 最后一节以及 X-Real-IP 整个内容无法构造,可以用于获取用户 IP。

用户 IP 往往会被使用与跟 Web 安全有关的场景上,例如检查用户登录地区,基于 IP 做访问频率控制等等。这种场景下,确保 IP 无法构造更重要。经过前面的测试和分析,对于直接面向用户部署的 Web 应用,必须使用从 TCP 连接中得到的 Remote Address;对于部署了 Nginx 这样反向代理的 Web 应用,在正确配置了 Set Header 行为后,可以使用 Nginx 传过来的 X-Real-IP 或 X-Forwarded-For 最后一节(实际上它们一定等价)。

那么,Web 应用自身如何判断请求是直接过来,还是由可控的代理转发来的呢?在代理转发时增加额外的请求头是一个办法,但是不怎么保险,因为请求头太容易构造了。如果一定要这么用,这个自定义头要够长够罕见,还要保管好不能泄露出去。

判断 Remote Address 是不是本地 IP 也是一种办法,不过也不完善,因为在 Nginx 所处服务器上访问,无论直连还是走 Nginx 代理,Remote Address 都是 127.0.0.1。这个问题还好通常可以忽略,更麻烦的是,反向代理服务器和实际的 Web 应用不一定部署在同一台服务器上。所以更合理的做法是收集所有代理服务器 IP 列表,Web 应用拿到 Remote Address 后逐一比对来判断是以何种方式访问。

通常,为了简化逻辑,生产环境会封掉通过带端口直接访问 Web 应用的形式,只允许通过 Nginx 来访问。那是不是这样就没问题了呢?也不见得。

首先,如果用户真的是通过代理访问 Nginx,X-Forwarded-For 最后一节以及 X-Real-IP 得到的是代理的 IP,安全相关的场景只能用这个,但有些场景如根据 IP 显示所在地天气,就需要尽可能获得用户真实 IP,这时候 X-Forwarded-For 中第一个 IP 就可以排上用场了。这时候需要注意一个问题,还是拿之前的例子做测试:

curl http://t1.imququ.com/ -H 'X-Forwarded-For: unknown, <>"1.1.1.1'

remoteAddress: 127.0.0.1

x-forwarded-for: unknown, <>"1.1.1.1, 114.248.238.236

x-real-ip: 114.248.238.236

X-Forwarded-For 最后一节是 Nginx 追加上去的,但之前部分都来自于 Nginx 收到的请求头,这部分用户输入内容完全不可信。使用时需要格外小心,符合 IP 格式才能使用,不然容易引发 SQL 注入或 XSS 等安全漏洞。

结论

直接对外提供服务的 Web 应用,在进行与安全有关的操作时,只能通过 Remote Address 获取 IP,不能相信任何请求头;

使用 Nginx 等 Web Server 进行反向代理的 Web 应用,在配置正确的前提下,要用 X-Forwarded-For 最后一节 或 X-Real-IP 来获取 IP(因为 Remote Address 得到的是 Nginx 所在服务器的内网 IP);同时还应该禁止 Web 应用直接对外提供服务;

在与安全无关的场景,例如通过 IP 显示所在地天气,可以从 X-Forwarded-For 靠前的位置获取 IP,但是需要校验 IP 格式合法性;

PS:网上有些文章建议这样配置 Nginx,其实并不合理:

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $remote_addr;

这样配置之后,安全性确实提高了,但是也导致请求到达 Nginx 之前的所有代理信息都被抹掉,无法为真正使用代理的用户提供更好的服务。还是应该弄明白这中间的原理,具体场景具体分析。

原文地址:https://imququ.com/post/x-forwarded-for-header-in-http.html

← Nginx 反向代理与负载均衡详解

Linux 查看端口占用情况 →

点我分享笔记

取消

分享笔记

昵称昵称 (必填)

邮箱邮箱 (必填)

引用地址引用地址

教程列表

ADO 教程

Ajax 教程

Android 教程

Angular2 教程

AngularJS 教程

AppML 教程

ASP 教程

ASP.NET 教程

Bootstrap 教程

Bootstrap4 教程

Bootstrap5 教程

C 教程

C# 教程

C++ 教程

Chart.js 教程

CSS 参考手册

CSS 教程

CSS3 教程

Django 教程

Docker 教程

DTD 教程

ECharts 教程

Eclipse 教程

FastAPI 教程

Firebug 教程

Font Awesome 图标

Foundation 教程

Git 教程

Go 语言教程

Google 地图 API 教程

Highcharts 教程

HTML DOM 教程

HTML 参考手册

HTML 字符集

HTML 教程

HTTP 教程

ionic 教程

iOS 教程

Java 教程

JavaScript 参考手册

Javascript 教程

jQuery EasyUI 教程

jQuery Mobile 教程

jQuery UI 教程

jQuery 教程

JSON 教程

JSP 教程

Julia 教程

Kotlin 教程

Linux 教程

Lua 教程

Markdown 教程

Matplotlib 教程

Maven 教程

Memcached 教程

MongoDB 教程

MySQL 教程

Node.js 教程

NumPy 教程

Pandas 教程

Perl 教程

PHP 教程

PostgreSQL 教程

Python 3 教程

Python 基础教程

Python 量化交易

R 教程

RDF 教程

React 教程

Redis 教程

RSS 教程

Ruby 教程

Rust 教程

Sass 教程

Scala 教程

SciPy 教程

Servlet 教程

SOAP 教程

SQL 教程

SQLite 教程

SVG 教程

SVN 教程

Swift 教程

TCP/IP 教程

TypeScript 教程

VBScript 教程

Vue.js 教程

Vue3 教程

W3C 教程

Web Service 教程

WSDL 教程

XLink 教程

XML DOM 教程

XML Schema 教程

XML 教程

XPath 教程

XQuery 教程

XSLFO 教程

XSLT 教程

数据结构

正则表达式

测验

浏览器

网站品质

网站建设指南

网站服务器教程

设计模式

在线实例

·HTML 实例

·CSS 实例

·JavaScript 实例

·Ajax 实例

·jQuery 实例

·XML 实例

·Java 实例

字符集&工具

· HTML 字符集设置

· HTML ASCII 字符集

· JS 混淆/加密

· PNG/JPEG 图片压缩

· HTML 拾色器

· JSON 格式化工具

· 随机数生成器

最新更新

·

Rust 宏

·

Seaborn 教程

·

Pandas 相关性分析

·

31.2k star, 免...

·

Dev Home —...

·

免费开源的 AI ...

·

11.2k star, 免...

站点信息

·

意见反馈

·

免责声明

·

关于我们

·

文章归档

关注微信

Copyright © 2013-2024 菜鸟教程 

runoob.com All Rights Reserved. 备案号:闽ICP备15012807号-1

微信关注

X-Forwarded-For - HTTP | MDN

rwarded-For - HTTP | MDNSkip to main contentSkip to searchSkip to select languageMDN Web DocsOpen main menuReferencesReferencesOverview / Web TechnologyWeb technology reference for developersHTMLStructure of content on the webCSSCode used to describe document styleJavaScriptGeneral-purpose scripting languageHTTPProtocol for transmitting web resourcesWeb APIsInterfaces for building web applicationsWeb ExtensionsDeveloping extensions for web browsersWeb TechnologyWeb technology reference for developersGuidesGuidesOverview / MDN Learning AreaLearn web developmentMDN Learning AreaLearn web developmentHTMLLearn to structure web content with HTMLCSSLearn to style content using CSSJavaScriptLearn to run scripts in the browserAccessibilityLearn to make the web accessible to allPlusPlusOverviewA customized MDN experienceAI Help (beta)Get real-time assistance and supportUpdatesAll browser compatibility updates at a glanceDocumentationLearn how to use MDN PlusFAQFrequently asked questions about MDN PlusCurriculumNewBlogPlayAI Help BetaSearch MDNClear search inputSearchThemeLog inSign up for freeWeb 开发技术HTTPHTTP 标头(header)X-Forwarded-ForArticle Actions中文 (简体)此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。Filter sidebarClear filter inputIn this article安全和隐私考虑语法指令示例解析选择一个 IP 地址规范参见

HTTP

指南:

资源和 URI

标识互联网上的内容

Data URL

MIME 类型介绍

常见的 MIME 类型

选择 www 或非 www 域名?

HTTP 指南

HTTP 基础

HTTP 概述

HTTP 的发展

HTTP 消息

典型的 HTTP 会话

HTTP/1.x 的连接管理

协议升级机制

HTTP 安全

内容安全策略(CSP)

HTTP Strict Transport Security (HSTS)

X-Content-Type-Options

X-Frame-Options

X-XSS-Protection

Mozilla web security guidelines

Mozilla Observatory

HTTP 访问控制(CORS)

HTTP 认证

HTTP 缓存

HTTP 压缩

HTTP 条件请求

HTTP 内容协商

HTTP cookie

HTTP 范围请求

HTTP 重定向

HTTP 规范

权限策略

参考:

HTTP 标头

AcceptAccept-CHAccept-CH-Lifetime

非标准

已弃用

Accept-CharsetAccept-EncodingAccept-LanguageAccept-PatchAccept-PostAccept-RangesAccess-Control-Allow-CredentialsAccess-Control-Allow-HeadersAccess-Control-Allow-MethodsAccess-Control-Allow-OriginAccess-Control-Expose-HeadersAccess-Control-Max-AgeAccess-Control-Request-HeadersAccess-Control-Request-MethodAgeAllowAlt-SvcAlt-UsedAuthorizationCache-ControlClear-Site-DataConnectionContent-DispositionContent-DPR

非标准

已弃用

Content-EncodingContent-LanguageContent-LengthContent-LocationContent-RangeContent-Security-PolicyContent-Security-Policy-Report-OnlyContent-TypeCookieCritical-CH

实验性

Cross-Origin-Embedder-PolicyCross-Origin-Opener-PolicyCross-Origin-Resource-PolicyDateDevice-MemoryDigest

非标准

已弃用

DNT

非标准

已弃用

Downlink

实验性

DPR

非标准

已弃用

Early-Data

实验性

ECT

实验性

ETagExpectExpect-CTExpiresForwardedFromHostIf-MatchIf-Modified-SinceIf-None-MatchIf-RangeIf-Unmodified-SinceKeep-AliveLarge-Allocation

非标准

已弃用

Last-ModifiedLinkLocationMax-ForwardsNEL

实验性

Observe-Browsing-Topics

实验性

非标准

OriginOrigin-Agent-Cluster

实验性

Permissions-PolicyPragma

已弃用

Proxy-AuthenticateProxy-AuthorizationRangeRefererReferrer-PolicyReporting-EndpointsRetry-AfterRTT

实验性

Save-Data

实验性

Sec-Browsing-Topics

实验性

非标准

Sec-CH-Prefers-Color-Scheme

实验性

Sec-CH-Prefers-Reduced-Motion

实验性

Sec-CH-Prefers-Reduced-Transparency

实验性

Sec-CH-UA

实验性

Sec-CH-UA-Arch

实验性

Sec-CH-UA-Bitness

实验性

Sec-CH-UA-Full-Version

已弃用

Sec-CH-UA-Full-Version-List

实验性

Sec-CH-UA-Mobile

实验性

Sec-CH-UA-Model

实验性

Sec-CH-UA-Platform

实验性

Sec-CH-UA-Platform-Version

实验性

Sec-Fetch-DestSec-Fetch-ModeSec-Fetch-SiteSec-Fetch-UserSec-GPC

实验性

非标准

Sec-PurposeSec-WebSocket-AcceptServerServer-TimingService-Worker-Navigation-PreloadSet-CookieSet-Login

实验性

SourceMapStrict-Transport-SecuritySupports-Loading-Mode

实验性

TETiming-Allow-OriginTk

非标准

已弃用

TrailerTransfer-EncodingUpgradeUpgrade-Insecure-RequestsUser-AgentVaryViaViewport-Width

非标准

已弃用

Want-Digest

非标准

已弃用

Warning

已弃用

Width

非标准

已弃用

WWW-AuthenticateX-Content-Type-OptionsX-DNS-Prefetch-Control

非标准

X-Forwarded-For

非标准

X-Forwarded-Host

非标准

X-Forwarded-Proto

非标准

X-Frame-OptionsX-XSS-Protection

非标准

HTTP 请求方法

CONNECTDELETEGETHEADOPTIONSPATCHPOSTPUTTRACE

HTTP 响应状态码

100 Continue101 Switching Protocols102 Processing103 Early Hints200 OK201 Created202 Accepted203 Non-Authoritative Information204 No Content205 Reset Content206 Partial Content207 Multi-Status208 Already Reported226 IM Used300 Multiple Choices301 Moved Permanently302 Found303 See Other304 Not Modified307 Temporary Redirect308 Permanent Redirect400 Bad Request401 Unauthorized402 Payment Required403 Forbidden404 Not Found405 Method Not Allowed406 Not Acceptable407 Proxy Authentication Required408 Request Timeout409 Conflict410 Gone411 Length Required412 Precondition Failed413 Content Too Large414 URI Too Long415 Unsupported Media Type416 Range Not Satisfiable417 Expectation Failed418 I'm a teapot421 Misdirected Request422 Unprocessable Content423 Locked424 Failed Dependency425 Too Early426 Upgrade Required428 Precondition Required429 Too Many Requests431 Request Header Fields Too Large451 Unavailable For Legal Reasons500 Internal Server Error501 Not Implemented502 Bad Gateway503 Service Unavailable504 Gateway Timeout505 HTTP Version Not Supported506 Variant Also Negotiates507 Insufficient Storage508 Loop Detected510 Not Extended511 Network Authentication Required

CSP 指令

CSP source valuesCSP: base-uriCSP: block-all-mixed-content

已弃用

CSP: child-srcCSP: connect-srcCSP: default-srcCSP: fenced-frame-srcCSP: font-srcCSP: form-actionCSP: frame-ancestorsCSP: frame-srcCSP: img-srcCSP: manifest-srcCSP: media-srcCSP: object-srcCSP: plugin-types

非标准

已弃用

CSP: prefetch-src

非标准

已弃用

CSP: referrer

非标准

已弃用

CSP: report-toCSP: report-uri

已弃用

CSP: require-trusted-types-for

实验性

CSP: sandboxCSP: script-srcCSP: script-src-attrCSP: script-src-elemCSP: style-srcCSP: style-src-attrCSP: style-src-elemCSP: trusted-types

实验性

CSP: upgrade-insecure-requestsCSP: worker-src

CORS 错误

Reason: CORS disabledReason: CORS header 'Access-Control-Allow-Origin' does not match 'xyz'Reason: CORS header 'Access-Control-Allow-Origin' missingReason: CORS header 'Origin' cannot be addedReason: CORS preflight channel did not succeedReason: CORS request did not succeedReason: CORS request external redirect not allowedReason: CORS request not HTTPReason: Credential is not supported if the CORS header 'Access-Control-Allow-Origin' is '*'Reason: Did not find method in CORS header 'Access-Control-Allow-Methods'Reason: expected 'true' in CORS header 'Access-Control-Allow-Credentials'Reason: invalid token 'xyz' in CORS header 'Access-Control-Allow-Headers'Reason: invalid token 'xyz' in CORS header 'Access-Control-Allow-Methods'Reason: missing token 'xyz' in CORS header 'Access-Control-Allow-Headers' from CORS preflight channelReason: Multiple CORS header 'Access-Control-Allow-Origin' not allowed

权限策略指令

Permissions-Policy: accelerometer

实验性

Permissions-Policy: ambient-light-sensor

实验性

Permissions-Policy: autoplay

实验性

Permissions-Policy: battery

实验性

Permissions-Policy: browsing-topics

实验性

非标准

Permissions-Policy: cameraPermissions-Policy: display-capturePermissions-Policy: document-domain

实验性

Permissions-Policy: encrypted-media

实验性

Permissions-Policy: execution-while-not-rendered

实验性

Permissions-Policy: execution-while-out-of-viewport

实验性

Permissions-Policy: fullscreenPermissions-Policy: gamepad

实验性

Permissions-Policy: geolocationPermissions-Policy: gyroscope

实验性

Permissions-Policy: hid

实验性

Permissions-Policy: identity-credentials-get

实验性

Permissions-Policy: idle-detection

实验性

Permissions-Policy: local-fonts

实验性

Permissions-Policy: magnetometer

实验性

Permissions-Policy: microphonePermissions-Policy: midi

实验性

Permissions-Policy: otp-credentials

实验性

Permissions-Policy: payment

实验性

Permissions-Policy: picture-in-picture

实验性

Permissions-Policy: publickey-credentials-create

实验性

Permissions-Policy: publickey-credentials-getPermissions-Policy: screen-wake-lockPermissions-Policy: serial

实验性

Permissions-Policy: speaker-selection

实验性

Permissions-Policy: storage-access

实验性

Permissions-Policy: usb

实验性

Permissions-Policy: web-sharePermissions-Policy: window-management

实验性

Permissions-Policy: xr-spatial-tracking

实验性

In this article安全和隐私考虑语法指令示例解析选择一个 IP 地址规范参见X-Forwarded-ForX-Forwarded-For(XFF)请求标头是一个事实上的用于标识通过代理服务器连接到 web 服务器的客户端的原始 IP 地址的标头。

警告: 对此标头的不恰当使用可能带来安全风险。有关详细信息,请参阅安全和隐私考虑。

当客户端直接连接到服务器时,其 IP 地址被发送给服务器(并且经常被记录在服务器的访问日志中)。但是如果客户端通过正向或反向代理服务器进行连接,服务器就只能看到最后一个代理服务器的 IP 地址,这个 IP 通常没什么用。如果最后一个代理服务器是与服务器安装在同一台主机上的负载均衡服务器,则更是如此。X-Forwarded-For 的出现,就是为了向服务器提供更有用的客户端 IP 地址。

有关使用此标头的详细指引,请参阅解析和选择一个 IP 地址部分。

标头类型

请求标头

禁止修改的标头

此标头的标准化版本是 HTTP Forwarded 标头。安全和隐私考虑按照设计的目的,此标头暴露隐私敏感信息,比如客户端的 IP 地址。因此,在应用此标头时,需要将用户的隐私问题考虑在内。

当在客户端和服务器之间没有受信任的反向代理服务器时(比如一个负载均衡服务器),X-Forwarded-For 标头是不可信的。如果客户端和所有的代理服务器都没有恶意且行为良好,那么此标头中的 IP 地址列表具有指令部分所描述的意义。但是如果客户端或任意代理服务器存有恶意或配置错误,那么此标头的任意部分(或整体)可能是伪造的(并且有可能不是一个列表或者甚至不包含 IP 地址)。

如果客户端和服务器之间存在任意受信任的反向代理服务器,最终 X-Forwarded-For 中的 IP 地址列表是可信的,因为这些 IP 是由受信任的代理服务器添加的(只要服务器只能通过这些代理服务器进行访问而不是可以被直接访问)。

使用 X-Forwarded-For 进行安全相关的操作时(比如速率限制或基于 IP 的访问控制),必须仅使用由受信任的代理服务器添加的 IP 地址。使用不可信的 IP,可能导致速率限制被规避、访问控制被绕过、内存耗尽,或其他与安全性或可用性相关的负面后果。

反过来,只有当使用伪造的值不会导致负面影响时,最左边的(不可信的)值才能被使用。语法httpX-Forwarded-For: , ,

元素用逗号分隔,逗号两边可以加上空格。指令

客户端的 IP 地址。

,

如果请求经过多个代理服务器,每个代理服务器的 IP 地址会依次出现在列表中。这意味着,如果客户端和代理服务器行为良好,最右边的 IP 地址会是最近的代理服务器的 IP 地址,最左边的 IP 地址会是原始客户端的 IP 地址。

示例httpX-Forwarded-For: 2001:db8:85a3:8d3:1319:8a2e:370:7348

X-Forwarded-For: 203.0.113.195

X-Forwarded-For: 203.0.113.195, 2001:db8:85a3:8d3:1319:8a2e:370:7348

X-Forwarded-For: 203.0.113.195,2001:db8:85a3:8d3:1319:8a2e:370:7348,150.172.238.178

解析对 X-Forwarded-For 标头的不当解析可能导致伪造的值被用于安全相关的目地,造成上文提及过的负面后果。

在一个请求中可能出现多个 X-Forwarded-For 标头。这些标头中的 IP 地址必须被当作一个列表进行处理,从第一个标头中的第一个 IP 地址开始,直到最后一个标头中的最后一个 IP 地址结束。有两种方法生成这个列表:

用逗号拼接所有 X-Forwarded-For 标头的值,然后用逗号将其分割成一个列表

用逗号将每一个 X-Forwarded-For 标头的值都分割成一个列表,然后将这些列表合并成一个列表

只使用多个 X-Forwarded-For 标头中的一个是不够的。

(一些反向代理服务器会自动将多个 X-Forwarded-For 标头合并成一个,但是最安全的做法是不要假设就是这种情况。)选择一个 IP 地址选择地址时,必须使用从所有 X-Forwarded-For 标头生成的完整 IP 列表。

当选择离客户端最近的 X-Forwarded-For IP 地址时(不可信并且不用于安全相关的目地),应该选择最左边的、第一个有效且不是私有/内部地址的 IP 地址。(要求”有效“是因为伪造的值可能根本就不是 IP 地址;要求“不是私有/内部地址”是因为客户端使用的代理服务器可能在它们的内部网络中,在这种情况下代理服务器可能添加了私有 IP 地址空间中的地址。)

当选择第一个可信的 X-Forwarded-For 客户端 IP 地址时,需要进行额外的配置。有两种常用的方法:

受信任代理服务器数量:配置了互联网和服务器之间的反向代理服务器数量。从 X-Forwarded-For IP 列表的最右边开始搜索,第(受信任代理服务器数量 - 1)个地址就是目标地址。(例如,如果只有一个反向代理服务器,这个代理服务器会添加客户端的 IP 地址,因此应该使用最右边的地址。如果有三个反向代理服务器,最后两个 IP 地址将是内部地址。)

受信任代理服务器列表:配置了受信任反向代理服务器的 IP 或 IP 范围。从 X-Forwarded-For IP 列表的最右边开始搜索,跳过受信任代理服务器列表中的所有地址。第一个不匹配的地址就是目标地址。

第一个可信的 X-Forwarded-For IP 地址可能属于一个不受信任的中间代理服务器,而不是实际的客户计算机,但这是唯一一个适用于安全用途的 IP 了。

注意如果从互联网可直接连接到服务器——即使服务器也位于一个受信任的反向代理服务器之后——X-Forwarded-For IP 列表中的任何部分都不能被认为是可信赖的,或者可安全地用于安全相关的用途。规范不属于任何既有规范。标准版本是 Forwarded。参见

Forwarded

X-Forwarded-Host

X-Forwarded-Proto

Via

Help improve MDNWas this page helpful to you?YesNoLearn how to contribute.This page was last modified on 2023年5月21日 by MDN contributors.View this page on GitHub• Report a problem with this contentMDN logoYour blueprint for a better internet.MDN on MastodonMDN on X (formerly Twitter)MDN on GitHubMDN Blog RSS FeedMDNAboutBlogCareersAdvertise with usSupportProduct helpReport an issueOur communitiesMDN CommunityMDN ForumMDN ChatDevelopersWeb TechnologiesLearn Web DevelopmentMDN PlusHacks BlogMozilla logoWebsite Privacy NoticeCookiesLegalCommunity Participation GuidelinesVisit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.Portions of this content are ©1998–2024 by individual mozilla.org contributors. Content available under a Creative Commons licen

X-Forwarded-For_百度百科

rwarded-For_百度百科 网页新闻贴吧知道网盘图片视频地图文库资讯采购百科百度首页登录注册进入词条全站搜索帮助首页秒懂百科特色百科知识专题加入百科百科团队权威合作下载百科APP个人中心收藏查看我的收藏0有用+10X-Forwarded-For播报讨论上传视频HTTP请求头字段本词条由“科普中国”科学百科词条编写与应用工作项目 审核 。X-Forwarded-For(XFF)是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段。 Squid 缓存代理服务器的开发人员最早引入了这一HTTP头字段,并由IETF在HTTP头字段标准化草案中正式提出。当今多数缓存服务器的用户为大型ISP,为了通过缓存的方式来降低他们的外部带宽,他们常常通过鼓励或强制用户使用代理服务器来接入互联网。有些情况下,这些代理服务器是透明代理,用户甚至不知道自己正在使用代理上网。如果没有XFF或者另外一种相似的技术,所有通过代理服务器的连接只会显示代理服务器的IP地址,而非连接发起的原始IP地址,这样的代理服务器实际上充当了匿名服务提供者的角色,如果连接的原始IP地址不可得,恶意访问的检测与预防的难度将大大增加。XFF的有效性依赖于代理服务器提供的连接原始IP地址的真实性,因此,XFF的有效使用应该保证代理服务器是可信的,比如可以通过创建可信服务器白名单的方式。外文名X-Forwarded-For简    称XFF头代    表客户端作    用获得HTTP请求端真实的IP目录1产生背景2格式3使用▪代理转发▪反向代理4Web日志产生背景播报编辑X-Forwarded-For(XFF)是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段。 Squid 缓存代理服务器的开发人员最早引入了这一HTTP头字段,并由IETF在Forwarded-For HTTP头字段标准化草案中正式提出。当今多数缓存服务器的使用者为大型ISP,为了通过缓存的方式来降低他们的外部带宽,他们常常通过鼓励或强制用户使用代理服务器来接入互联网。有些情况下, 这些代理服务器是透明代理, 用户甚至不知道自己正在使用代理上网。如果没有XFF或者另外一种相似的技术,所有通过代理服务器的连接只会显示代理服务器的IP地址(而非连接发起的原始IP地址), 这样的代理服务器实际上充当了匿名服务提供者的角色, 如果连接的原始IP地址不可得,恶意访问的检测与预防的难度将大大增加。XFF的有效性依赖于代理服务器提供的连接原始IP地址的真实性,因此, XFF的有效使用应该保证代理服务器是可信的, 比如可以通过建立可信服务器白名单的方式。格式播报编辑这一HTTP头一般格式如下:X-Forwarded-For: client1, proxy1, proxy2, proxy3其中的值通过一个 逗号+空格 把多个IP地址区分开, 最左边(client1)是最原始客户端的IP地址, 代理服务器每成功收到一个请求,就把请求来源IP地址添加到右边。 在上面这个例子中,这个请求成功通过了三台代理服务器:proxy1, proxy2 及 proxy3。请求由client1发出,到达了proxy3(proxy3可能是请求的终点)。请求刚从client1中发出时,XFF是空的,请求被发往proxy1;通过proxy1的时候,client1被添加到XFF中,之后请求被发往proxy2;通过proxy2的时候,proxy1被添加到XFF中,之后请求被发往proxy3;通过proxy3时,proxy2被添加到XFF中,之后请求的的去向不明,如果proxy3不是请求终点,请求会被继续转发。鉴于伪造这一字段非常容易,应该谨慎使用X-Forwarded-For字段。正常情况下XFF中最后一个IP地址是最后一个代理服务器的IP地址, 这通常是一个比较可靠的信息来源。使用播报编辑在代理转发及反向代理中经常使用X-Forwarded-For 字段。代理转发在 代理转发的场景中,你可以通过内部代理链以及记录在网关设备上的IP地址追踪到网络中客户端的IP地址。处于安全考虑,网关设备在把请求发送到外网(因特网)前,应该去除 X-Forwarded-For 字段里的所有信息。这种情况下所有的信息都是在你的内部网络内生成,因此X-Forwarded-For字段中的信息应该是可靠的。反向代理在反向代理的情况下,你可以追踪到互联网上连接到你的服务器的客户端的IP地址, 即使你的网络服务器和互联网在路由上是不可达的。这种情况下你不应该信任所有X-Forwarded-For信息,其中有部分可能是伪造的。因此需要建立一个信任白名单来确保X-Forwarded-For中哪些IP地址对你是可信的。最后一次代理服务器的地址并没有记录在代理链中,因此只记录 X-Forwarded-For 字段是不够的。完整起见,Web服务器应该记录请求来源的IP地址以及X-Forwarded-For 字段信息。 [1]Web日志播报编辑大多数Web服务器可以通过配置在日志中记录X-Forwarded-For。 Apache中可以非常简单地修改配置来实现,但MS IIS 6及以下的版本需要第三方软件支持来实现。IIS7用户可以从IIS官方网站获得免费的IIS相关组件来实现。 [1]新手上路成长任务编辑入门编辑规则本人编辑我有疑问内容质疑在线客服官方贴吧意见反馈投诉建议举报不良信息未通过词条申诉投诉侵权信息封禁查询与解封©2024 Baidu 使用百度前必读 | 百科协议 | 隐私政策 | 百度百科合作平台 | 京ICP证030173号 京公网安备110000020000

XFF漏洞攻击原理及防御方案 - 知乎

XFF漏洞攻击原理及防御方案 - 知乎切换模式写文章登录/注册XFF漏洞攻击原理及防御方案美创科技数据安全领导者和引路人,数字化转型推动者01常见HTTP头注入参数在介绍XFF注入之前,我们先来了解下常见的存在HTTP头注入的参数,如下图:User-Agent:使得服务器能够识别客户使用的操作系统,浏览器版本等.(很多数据量大的网站中会记录客户使用的操作系统或浏览器版本等存入数据库中)Cookie:网站为了辨别用户身份进行session跟踪,并储存在用户本地终端上的数据(通常经过加密)X-Forwarded-For:简称XFF头,代表了HTTP的请求端真实的IP。它被认为是客户端通过HTTP代理或者负载均衡器连接到web服务端获取源ip地址的一个标准(通常一些网站的防注入功能会记录请求端真实IP地址并写入数据库或某文件[通过修改XXF头可以实现伪造IP])。Rerferer:浏览器向 WEB 服务器表明自己的页面来源。Host:客户端指定自己想访问的WEB服务器的域名/IP 地址和端口号。02XFF注入的概念XFF,是X-Forwarded-for的缩写,属于SQL注入的一种,该注入原理是通过修改X-Forwarded-for头对带入系统的dns进行sql注入,达到欺骗服务器执行恶意的SQL命令的效果,从而可以得到网站的数据库内容。03XFF的危害①数据库信息泄漏:数据库中存放的用户的隐私信息的泄露。②网页篡改:通过操作数据库对特定网页进行篡改。③网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。④数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改。⑤服务器被远程控制,被安装后门。经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。04XFF漏洞复现1. 确定漏洞的存在使用burpsuite工具进行抓包,并用Repeater模块对请求进行修改,分别修改X-Forwarded-For的值如下所示:X-Forwarded-for: 127.0.0.1X-Forwarded-for: 127.0.0.1’’X-Forwarded-for: 127.0.0.1' and 1=1#X-Forwarded-for: 127.0.0.1' and 1=2#若访问的结果如上图所示,则说明存在SQL注入漏洞。2. 判断查询字段数量判断出字段数量是4。3. 查询SQL语句插入位置4. 查询当前数据库库名查询出的当前数据库库名为aaa。05XFF注入PHP代码06防御方式①过滤http头中的X-Forwarded-for header中的内容,不允许其插入敏感字符,过滤字符参考sql注入修复方案。②过滤以下敏感字符“net user”“xp_cmdshell”“add”“exec master.dbo.xp_cmdshell”“net localgroup administrators”“select”“count”“Asc”“char”“mid”“ ‘ ”“ :”“ " ”“insert”“delete from”“drop table”“update”“truncate”“from”“ % ”发布于 2019-11-18 17:51渗透测试信息安全网络安全​赞同 16​​3 条评论​分享​喜欢​收藏​申请

百度知道 - 信息提示

百度知道 - 信息提示

百度首页

商城

注册

登录

网页

资讯

视频

图片

知道

文库

贴吧采购

地图更多

搜索答案

我要提问

百度知道>提示信息

知道宝贝找不到问题了>_

该问题可能已经失效。返回首页

15秒以后自动返回

帮助

 | 意见反馈

 | 投诉举报

京ICP证030173号-1   京网文【2023】1034-029号     ©2024Baidu  使用百度前必读 | 知道协议 

XFF与Referer(含实操)-CSDN博客

>

XFF与Referer(含实操)-CSDN博客

XFF与Referer(含实操)

最新推荐文章于 2023-09-03 17:23:03 发布

米斯特怀特墨客

最新推荐文章于 2023-09-03 17:23:03 发布

阅读量2.3w

收藏

73

点赞数

20

分类专栏:

CTF

网络安全基础知识

文章标签:

web

http

nginx

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/slj1552560/article/details/113825428

版权

网络安全基础知识

同时被 2 个专栏收录

15 篇文章

3 订阅

订阅专栏

CTF

2 篇文章

2 订阅

订阅专栏

Part1:XFF与Referer基本了解

关于xff和referer维基百科:

X-Forwarded-For(XFF)是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段。

HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器该网页是从哪个页面链接过来的,服务器因此可以获得一些信息用于处理。简单地说,xff是告诉服务器当前请求者的最终ip的http请求头字段通常可以直接通过修改http头中的X-Forwarded-For字段来仿造请求的最终ip

+++++++++++++++++++++++++++++++++++++++++++++++++++ 也就是说:

xff 是http的拓展头部,作用是使Web服务器获取访问用户的IP真实地址(可伪造)。由于很多用户通过代理服务器进行访问,服务器只能获取代理服务器的IP地址,而xff的作用在于记录用户的真实IP,以及代理服务器的IP。

格式为:X-Forwarded-For: 本机IP, 代理1IP, 代理2IP, 代理2IP

referer 是http的拓展头部,作用是记录当前请求页面的来源页面的地址。服务器使用referer确认访问来源,如果referer内容不符合要求,服务器可以拦截或者重定向请求。

即:XFF构造来源IP,Referer构造来源浏览器!!!!

Part2:攻防世界WEB实操 首先进入环境,发现只有这句话,打开Burpsuite尝试抓包 在抓到的包上构造来源IP,GO! (不能写成XFF:~~~)

获得来源浏览器~~~~ 在包上加上Referer,GO! Capure The Flag!

优惠劵

米斯特怀特墨客

关注

关注

20

点赞

73

收藏

觉得还不错?

一键收藏

知道了

0

评论

XFF与Referer(含实操)

Part1:XFF与Referer基本了解关于xff和referer维基百科:X-Forwarded-For(XFF)是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段。HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器该网页是从哪个页面链接过来的,服务器因此可以获得一些信息用于处理。简单地说,xff是告诉服务器当前请求者的最终ip的http请求头字段通常可以直接通过修改http

复制链接

扫一扫

专栏目录

把bin填充0xFF到指定大小(含源码)

12-25

在mcu开发的时候, 特别是做升级文件的时候, 我们有时候需要把一个bin文件,填充指定大小,填充0xFF。 做了一个很简单的小工具,填充0xFF,到指定大小,例如16K。利用批处理就可以执行,支持相对路径。

正向代理,反向代理及XFF

qq_44875284的博客

07-21

3413

记录一下正向代理,反向代理和XFF

参与评论

您还未登录,请先

登录

后发表或查看评论

负载均衡之XFF(X-Forwarded-For)玩法解析

刘东义的博客

10-01

6186

负载均衡在客户场景中,通常客户比较在意访问者的身份要透明,为出现安全问题后,好溯源。那么怎么看呢,一种是负载均衡做了SNAT导致源IP地址都为负载均衡的地址,一种是负载均衡的前端设备比如CDN节点作了SNAT且插入了XFF字段标识客户端IP。对上述的两种情况,以下做了详细说明。

XFF传输模式:

传输客户端IP至后台服务器(适用于本端设备做SNAT场景)

使用HTTP头部携带的IP连接服务器(适用于前端都是CDN节点引流场景)

1、传输客户端IP至后台服务器(配置了SNAT场景,本...

LCD12864原理与应用

01-10

#include

#include

#define uchar unsigned char

#define uint unsigned int

//下面是“欢迎访问伊人憔悴百度空间”点阵数据,一个汉字有32字节数据组成

unsigned char code huan[]= // 欢

{

0x04,0x24,0x44,0x84,0x64,0x9C,0x40,0x30,0x0F,0xC8,0x08,0x08,0x28,0x18,0x00,0x00,

0x10,0x08,0x06,0x01,0x82,0x4C,0x20,0x18,0x06,0x01,0x06,0x18,0x20,0x40,0x80,0x00

};

unsigned char code ying[]= //迎

{

0x40,0x40,0x42,0xCC,0x00,0x00,0xFC,0x04,0x02,0x00,0xFC,0x04,0x04,0xFC,0x00,0x00,

0x00,0x40,0x20,0x1F,0x20,0x40,0x4F,0x44,0x42,0x40,0x7F,0x42,0x44,0x43,0x40,0x00

};

unsigned char code fang[]= //访

{

0x40,0x40,0x42,0xCC,0x00,0x08,0x08,0xF8,0x89,0x8E,0x88,0x88,0x88,0x08,0x08,0x00,

0x00,0x00,0x00,0x3F,0x90,0x48,0x30,0x0F,0x00,0x40,0x80,0x40,0x3F,0x00,0x00,0x00

};

unsigned char code wen[]= //问

{

0x00,0xF8,0x01,0x02,0x00,0xE2,0x22,0x22,0x22,0xE2,0x02,0x02,0x02,0xFE,0x00,0x00,

0x00,0xFF,0x00,0x00,0x00,0x1F,0x08,0x08,0x08,0x1F,0x00,0x40,0x80,0x7F,0x00,0x00

};

unsigned char code yi[]= //伊

将bin填充0xFF到指定大小(含源码)

01-15

升级flash时,flash大小必须是16M,下载的flash文件有时不足16M,便做了个小工具,将bin填充0xFF到指定大小。

XFF(X-FORWARDED-FOR)

慎铭的博客

02-03

7142

  XFF(X-FORWARDED-FOR)是http的拓展头部,作用是使Web服务器获取访问用户的IP真实地址(可伪造)。由于很多用户通过代理服务器进行访问,服务器只能获取代理服务器的IP地址,而xff的作用在于记录用户的真实IP,以及代理服务器的IP。

格式:

X-Forwarded-For: 本机IP, 代理1IP, 代理2IP, 代理3IP

...

Xff和Refer

HELLOW,文浩

07-26

2668

Xff是一个 HTTP 扩展头部,主要是为了让 Web 服务器获取访问用户的真实 IP 地址。在代理转发及反向代理中经常使用X-Forwarded-For 字段。

xff_referer、simple_js(javascript代码审计+超详细脚本编写过程)

Welcome To Myon'Blog !

03-11

431

xff_referer、simple_js(javascript代码审计+超详细脚本编写过程)

X-Forwarded-For(XFF),http referer,BurpSuite抓包 ,

HTML代码简化结构,javascript,Python脚本编写,split函数,ASCII码

XFF漏洞和referer的含义

zx980414k的博客

03-11

2936

XFF即x-forward-for,后面跟发起http请求的原始ip地址,如果是本机就是127.0.0.1

referer可以理解为从哪来,比如我用百度搜索CSDN,然后点击链接进入之后,在页面上按f12查看请求头会发现referer就是百度的域名。

XFF和referer可以用burp截断以后伪造,这就是XFF漏洞。

...

攻防世界 web——xff_referer

最新发布

XYZCG的博客

09-03

375

(1)X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。由于很多用户通过代理服务器进行访问,服务器只能获取代理服务器的IP地址,而xff的作用在于记录用户的真实IP,以及代理服务器的IP。(2)HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器基此可以获得一些信息用于处理。

与上0xFF的意义.zip

06-05

有些人,不太懂,C语言中为什么出现“&0xFF”,它存在的意义是什么,是补零?不会,他只是按位与,没有补零的功效,那到底是什么,这里会告诉你,而且不枉你的5积分!

linux 下将指定文件以0xFF填充到指定大小源码

01-15

linux 下将指定文件在结尾添加0xFF添加到指定大小(源码)。用法gcc 编译后运行,有帮助命令。4G以上文件未测试。(A:代码风格糟糕注释少,还是没人用的生僻工具,骗分!B:啥~骗分?技术上的事情不叫骗。)

元器件应用中的MM系列MM1227XFF集成电路实用检测数据

11-20

MM1227XFF是电子开关电路,为8脚双列直插式塑料封装,在松下SL-VC910X、LX-V55EN、LX-V850EN型VCD影碟机电路IC1015上的正常工作电压和在路电阻典型检测数据分别如表1、表2所列,用MF14型三用表测得(电压DC挡,电阻×100Ω挡)。  表 MM1227XFF在松下SL-VC910X型影碟机上的检测数据

  表 MM1227XFF在松下LX-V55EN、LX-V850EN型影碟机上的检测数据

  

首次安装Pycharm出现Error:Python interpreter is not selected. Please setup Python interpreter first解决办法

slj1552560的博客

03-08

9605

一般原因是:

1、本地环境中没有安装Python,或者远程设置也没有;

2、安装的pycharm的版本和你当前Python的版本不匹配也会出现这个问题;

然后在那个设置符号那加上下载好的python3.exe就行了

(一般情况下安装包中带的是python.exe,我这个是为了配环境变量好识别自己改成的python3,因为我同时还下了一个python2)

...

sql语句中limit的用法

slj1552560的博客

02-18

9106

Part1:概念及具体用法

概念:limit子句用于限制查询结果返回的数量。

具体语句:【select * from tablename limit i,j;】

*:tablename:要查询的表名;

*:i:查询结果的索引值(默认从0开始);

*:j:查询结果返回数量;

Part2:实例

(1)查询student表所有数据

select * from student;

(2)查询第一条数据

select * from student limit 1;

或:

select * from student

WIN10系统如何彻底关闭防火墙

slj1552560的博客

02-19

3255

Step1.

打开控制面板->防火墙->启动或关闭防火墙->关闭

Step2.

在键盘上按下“win”+“R”组合键调出运行窗口,随后输入命令“regedit”并“确定”->在打开的注册表编辑器界面中依次找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\mpssvc,在右侧找到其中的“start”值,并将值改为“4”。

现在就可以下菜刀,蚁剑那些了~~

...

ubuntu16版本配置

slj1552560的博客

02-10

2606

linux 操作系统基础需要掌握:

1.基本命令

2.VIM ——linux文本编辑器(vim详解见链接)

3.网络配置

4.权限系统(包括新增用户,减掉用户等等)

5.程序安装(许多软件都要编译安装)

6.*:日志

以下与linux关系不大:

7.中间键(很重要):

server:nginx,apache,tomcad,weblogic

队列系统:mq,nosql,redis,memcache,rabbitMQ,ES,kafka

以上这些必须了解!

8.docker

一些命令:

sudo apt upda

搭建sqlilabs遇到的一些问题以及解决方法

slj1552560的博客

05-08

1421

1.在phpstudy中高版本php(大于7)不再支持mysql-connection

所以在sql-connections文件夹下的文件有的要改,

把mysql改成mysqli

具体哪个要改看报错吧,我忘了

2.连接不到security数据库

可能是密码没对应,进db-creds.inc改一下

具体改成什么看phpstudy数据库选项里数据库下密码;

或者就是没开mysql,回主页开一下;

或者就是没建库,security建一下~

全是文字,希望有帮助,自己配完写的,不求精致了

...

x老师告诉小宁其实xff和referer是可以伪造的

03-16

是的,X老师告诉小宁,实际上xff和referer是可以被伪造的。这意味着攻击者可以通过伪造这些信息来欺骗服务器,从而进行一些恶意行为,如跨站点请求伪造攻击(CSRF)。因此,网站开发者需要采取一些措施来防止这种攻击。

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

米斯特怀特墨客

CSDN认证博客专家

CSDN认证企业博客

码龄5年

暂无认证

16

原创

15万+

周排名

44万+

总排名

6万+

访问

等级

413

积分

5

粉丝

40

获赞

6

评论

172

收藏

私信

关注

热门文章

XFF与Referer(含实操)

23102

Linux之vim详解

9720

首次安装Pycharm出现Error:Python interpreter is not selected. Please setup Python interpreter first解决办法

9594

sql语句中limit的用法

9103

WIN10系统如何彻底关闭防火墙

3255

分类专栏

汇编语言学习

1篇

网络安全基础知识

15篇

洛谷 动态规划问题

1篇

CTF

2篇

网络入门知识

2篇

php等安全配置

1篇

最新评论

Linux之vim详解

Marx.luyi:

非常棒的博客,对vim学习很有帮助!

首次安装Pycharm出现Error:Python interpreter is not selected. Please setup Python interpreter first解决办法

米斯特怀特墨客:

实在不行可以重下一遍python,然后在python interpreter处选中.exe文件安上去,之后再把conda配好pycharm就基本没问题了。

首次安装Pycharm出现Error:Python interpreter is not selected. Please setup Python interpreter first解决办法

hsl20021108:

你好,怎么弄的,我怎么不行

搭建sqlilabs遇到的一些问题以及解决方法

米斯特怀特墨客:

建完库如果自动导入有问题可以手动将文件夹下的sql文件导入到数据库,之后就没什么问题了。

最大的问题可能就是php版本问题。

http协议详解

LaoYuanPython:

博主辛苦了!谢谢分享! 原创不易,必须支持! 伙计,加油!

最后拉个票,本人正参与博客之星评选,1月24、25日每天都可投票,敬请支持!谢谢!

投票链接:[code=python]

https://bss.csdn.net/m/topic/blog_star2020/detail?username=laoyuanpython

[/code]

或到老猿博文首页内的置顶博文跳转!

您愿意向朋友推荐“博客详情页”吗?

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

汇编语言第一天学习--基础知识

小迪渗透之Mysql注入要点记录

搭建sqlilabs遇到的一些问题以及解决方法

2021年17篇

目录

目录

分类专栏

汇编语言学习

1篇

网络安全基础知识

15篇

洛谷 动态规划问题

1篇

CTF

2篇

网络入门知识

2篇

php等安全配置

1篇

目录

评论

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

X-Forwarded-For - HTTP | MDN

rwarded-For - HTTP | MDNSkip to main contentSkip to searchSkip to select languageMDN Web DocsOpen main menuReferencesReferencesOverview / Web TechnologyWeb technology reference for developersHTMLStructure of content on the webCSSCode used to describe document styleJavaScriptGeneral-purpose scripting languageHTTPProtocol for transmitting web resourcesWeb APIsInterfaces for building web applicationsWeb ExtensionsDeveloping extensions for web browsersWeb TechnologyWeb technology reference for developersGuidesGuidesOverview / MDN Learning AreaLearn web developmentMDN Learning AreaLearn web developmentHTMLLearn to structure web content with HTMLCSSLearn to style content using CSSJavaScriptLearn to run scripts in the browserAccessibilityLearn to make the web accessible to allPlusPlusOverviewA customized MDN experienceAI Help (beta)Get real-time assistance and supportUpdatesAll browser compatibility updates at a glanceDocumentationLearn how to use MDN PlusFAQFrequently asked questions about MDN PlusCurriculumNewBlogPlayAI Help BetaSearch MDNClear search inputSearchThemeLog inSign up for freeReferencesHTTPHTTP headersX-Forwarded-ForArticle ActionsEnglish (US)Filter sidebarClear filter inputIn this articleSecurity and privacy concernsSyntaxDirectivesExamplesParsingSelecting an IP addressSpecificationsSee also

HTTP

Guides

Resources and URIs

Identifying resources on the Web

Data URLs

Introduction to MIME types

Common MIME types

Choosing between www and non-www URLs

HTTP guide

Basics of HTTP

Overview of HTTP

Evolution of HTTP

HTTP Messages

A typical HTTP session

Connection management in HTTP/1.x

Protocol upgrade mechanism

HTTP security

Content Security Policy (CSP)

HTTP Strict Transport Security (HSTS)

X-Content-Type-Options

X-Frame-Options

X-XSS-Protection

Mozilla web security guidelines

Mozilla Observatory

HTTP access control (CORS)

HTTP authentication

HTTP caching

HTTP compression

HTTP conditional requests

HTTP content negotiation

HTTP cookies

HTTP range requests

HTTP redirects

HTTP specifications

Permissions Policy

References

HTTP headers

AcceptAccept-CHAccept-CH-Lifetime

Non-standard

Deprecated

Accept-CharsetAccept-EncodingAccept-LanguageAccept-PatchAccept-PostAccept-RangesAccess-Control-Allow-CredentialsAccess-Control-Allow-HeadersAccess-Control-Allow-MethodsAccess-Control-Allow-OriginAccess-Control-Expose-HeadersAccess-Control-Max-AgeAccess-Control-Request-HeadersAccess-Control-Request-MethodAgeAllowAlt-SvcAlt-UsedAuthorizationCache-ControlClear-Site-DataConnectionContent-DispositionContent-DPR

Non-standard

Deprecated

Content-EncodingContent-LanguageContent-LengthContent-LocationContent-RangeContent-Security-PolicyContent-Security-Policy-Report-OnlyContent-TypeCookieCritical-CH

Experimental

Cross-Origin-Embedder-PolicyCross-Origin-Opener-PolicyCross-Origin-Resource-PolicyDateDevice-MemoryDigest

Non-standard

Deprecated

DNT

Non-standard

Deprecated

Downlink

Experimental

DPR

Non-standard

Deprecated

Early-Data

Experimental

ECT

Experimental

ETagExpectExpect-CTExpiresForwardedFromHostIf-MatchIf-Modified-SinceIf-None-MatchIf-RangeIf-Unmodified-SinceKeep-AliveLarge-Allocation

Non-standard

Deprecated

Last-ModifiedLinkLocationMax-ForwardsNEL

Experimental

Observe-Browsing-Topics

Experimental

Non-standard

OriginOrigin-Agent-Cluster

Experimental

Permissions-PolicyPragma

Deprecated

Proxy-AuthenticateProxy-AuthorizationRangeRefererReferrer-PolicyReporting-EndpointsRetry-AfterRTT

Experimental

Save-Data

Experimental

Sec-Browsing-Topics

Experimental

Non-standard

Sec-CH-Prefers-Color-Scheme

Experimental

Sec-CH-Prefers-Reduced-Motion

Experimental

Sec-CH-Prefers-Reduced-Transparency

Experimental

Sec-CH-UA

Experimental

Sec-CH-UA-Arch

Experimental

Sec-CH-UA-Bitness

Experimental

Sec-CH-UA-Full-Version

Deprecated

Sec-CH-UA-Full-Version-List

Experimental

Sec-CH-UA-Mobile

Experimental

Sec-CH-UA-Model

Experimental

Sec-CH-UA-Platform

Experimental

Sec-CH-UA-Platform-Version

Experimental

Sec-Fetch-DestSec-Fetch-ModeSec-Fetch-SiteSec-Fetch-UserSec-GPC

Experimental

Non-standard

Sec-PurposeSec-WebSocket-AcceptServerServer-TimingService-Worker-Navigation-PreloadSet-CookieSet-Login

Experimental

SourceMapStrict-Transport-SecuritySupports-Loading-Mode

Experimental

TETiming-Allow-OriginTk

Non-standard

Deprecated

TrailerTransfer-EncodingUpgradeUpgrade-Insecure-RequestsUser-AgentVaryViaViewport-Width

Non-standard

Deprecated

Want-Digest

Non-standard

Deprecated

Warning

Deprecated

Width

Non-standard

Deprecated

WWW-AuthenticateX-Content-Type-OptionsX-DNS-Prefetch-Control

Non-standard

X-Forwarded-For

Non-standard

X-Forwarded-Host

Non-standard

X-Forwarded-Proto

Non-standard

X-Frame-OptionsX-XSS-Protection

Non-standard

HTTP request methods

CONNECTDELETEGETHEADOPTIONSPATCHPOSTPUTTRACE

HTTP response status codes

100 Continue101 Switching Protocols102 Processing103 Early Hints200 OK201 Created202 Accepted203 Non-Authoritative Information204 No Content205 Reset Content206 Partial Content207 Multi-Status208 Already Reported226 IM Used300 Multiple Choices301 Moved Permanently302 Found303 See Other304 Not Modified307 Temporary Redirect308 Permanent Redirect400 Bad Request401 Unauthorized402 Payment Required403 Forbidden404 Not Found405 Method Not Allowed406 Not Acceptable407 Proxy Authentication Required408 Request Timeout409 Conflict410 Gone411 Length Required412 Precondition Failed413 Content Too Large414 URI Too Long415 Unsupported Media Type416 Range Not Satisfiable417 Expectation Failed418 I'm a teapot421 Misdirected Request422 Unprocessable Content423 Locked424 Failed Dependency425 Too Early426 Upgrade Required428 Precondition Required429 Too Many Requests431 Request Header Fields Too Large451 Unavailable For Legal Reasons500 Internal Server Error501 Not Implemented502 Bad Gateway503 Service Unavailable504 Gateway Timeout505 HTTP Version Not Supported506 Variant Also Negotiates507 Insufficient Storage508 Loop Detected510 Not Extended511 Network Authentication Required

CSP directives

CSP source valuesCSP: base-uriCSP: block-all-mixed-content

Deprecated

CSP: child-srcCSP: connect-srcCSP: default-srcCSP: fenced-frame-srcCSP: font-srcCSP: form-actionCSP: frame-ancestorsCSP: frame-srcCSP: img-srcCSP: manifest-srcCSP: media-srcCSP: object-srcCSP: plugin-types

Non-standard

Deprecated

CSP: prefetch-src

Non-standard

Deprecated

CSP: referrer

Non-standard

Deprecated

CSP: report-toCSP: report-uri

Deprecated

CSP: require-trusted-types-for

Experimental

CSP: sandboxCSP: script-srcCSP: script-src-attrCSP: script-src-elemCSP: style-srcCSP: style-src-attrCSP: style-src-elemCSP: trusted-types

Experimental

CSP: upgrade-insecure-requestsCSP: worker-src

CORS errors

Reason: CORS disabledReason: CORS header 'Access-Control-Allow-Origin' does not match 'xyz'Reason: CORS header 'Access-Control-Allow-Origin' missingReason: CORS header 'Origin' cannot be addedReason: CORS preflight channel did not succeedReason: CORS request did not succeedReason: CORS request external redirect not allowedReason: CORS request not HTTPReason: Credential is not supported if the CORS header 'Access-Control-Allow-Origin' is '*'Reason: Did not find method in CORS header 'Access-Control-Allow-Methods'Reason: expected 'true' in CORS header 'Access-Control-Allow-Credentials'Reason: invalid token 'xyz' in CORS header 'Access-Control-Allow-Headers'Reason: invalid token 'xyz' in CORS header 'Access-Control-Allow-Methods'Reason: missing token 'xyz' in CORS header 'Access-Control-Allow-Headers' from CORS preflight channelReason: Multiple CORS header 'Access-Control-Allow-Origin' not allowed

Permissions-Policy directives

Permissions-Policy: accelerometer

Experimental

Permissions-Policy: ambient-light-sensor

Experimental

Permissions-Policy: autoplay

Experimental

Permissions-Policy: battery

Experimental

Permissions-Policy: browsing-topics

Experimental

Non-standard

Permissions-Policy: cameraPermissions-Policy: display-capturePermissions-Policy: document-domain

Experimental

Permissions-Policy: encrypted-media

Experimental

Permissions-Policy: execution-while-not-rendered

Experimental

Permissions-Policy: execution-while-out-of-viewport

Experimental

Permissions-Policy: fullscreenPermissions-Policy: gamepad

Experimental

Permissions-Policy: geolocationPermissions-Policy: gyroscope

Experimental

Permissions-Policy: hid

Experimental

Permissions-Policy: identity-credentials-get

Experimental

Permissions-Policy: idle-detection

Experimental

Permissions-Policy: local-fonts

Experimental

Permissions-Policy: magnetometer

Experimental

Permissions-Policy: microphonePermissions-Policy: midi

Experimental

Permissions-Policy: otp-credentials

Experimental

Permissions-Policy: payment

Experimental

Permissions-Policy: picture-in-picture

Experimental

Permissions-Policy: publickey-credentials-create

Experimental

Permissions-Policy: publickey-credentials-getPermissions-Policy: screen-wake-lockPermissions-Policy: serial

Experimental

Permissions-Policy: speaker-selection

Experimental

Permissions-Policy: storage-access

Experimental

Permissions-Policy: usb

Experimental

Permissions-Policy: web-sharePermissions-Policy: window-management

Experimental

Permissions-Policy: xr-spatial-tracking

Experimental

In this articleSecurity and privacy concernsSyntaxDirectivesExamplesParsingSelecting an IP addressSpecificationsSee alsoX-Forwarded-ForThe X-Forwarded-For (XFF) request header is a de-facto standard header for identifying the originating IP address of a client connecting to a web server through a proxy server.

Warning: Improper use of this header can be a security risk. For details, see the Security and privacy concerns section.

When a client connects directly to a server, the

client's IP address is sent to the server (and is often written to server

access logs). But if a client connection passes through any forward or reverse proxies, the server only

sees the final proxy's IP address, which is often of little use. That's especially true if

the final proxy is a load balancer which is part of the same installation

as the server. So, to provide a more-useful client IP address to the server, the X-Forwarded-For request header is

used.

For detailed guidance on using this header, see the Parsing and Selecting an IP address sections.

Header type

Request header

Forbidden header name

no

A standardized version of this header is the HTTP Forwarded header.Security and privacy concerns

This header, by design, exposes privacy-sensitive information, such as the IP address

of the client. Therefore the user's privacy must be kept in mind when deploying this

header.

The X-Forwarded-For header is untrustworthy when no trusted reverse proxy (e.g., a load balancer) is between the client and

server. If the client and all proxies are benign and well-behaved, then the list of IP addresses in the header

has the meaning described in the Directives section. But if there's a risk the client or any proxy

is malicious or misconfigured, then it's possible any part (or the entirety) of the header may have been

spoofed (and may not be a list or contain IP addresses at all).

If any trusted reverse proxies are between the client and

server, the final X-Forwarded-For IP addresses (one for each trusted proxy) are trustworthy, as they

were added by trusted proxies. (That's true as long as the server is only

accessible through those proxies and not also directly).

Any security-related use of X-Forwarded-For (such as for rate limiting or IP-based

access control) must only use IP addresses added by a trusted proxy. Using untrustworthy

values can result in rate-limiter avoidance, access-control bypass, memory exhaustion, or

other negative security or availability consequences.

Conversely, leftmost (untrusted) values must only be used where there will be no negative

impact from the possibility of using spoofed values.

SyntaxhttpX-Forwarded-For: , ,

Elements are comma-separated, with optional whitespace surrounding the commas.Directives

The client IP address

,

If a request goes through multiple proxies, the IP addresses of each successive

proxy is listed. This means that, given well-behaved client and proxies, the rightmost

IP address is the IP address of the most recent proxy and the leftmost IP address is

the IP address of the originating client.

ExampleshttpX-Forwarded-For: 2001:db8:85a3:8d3:1319:8a2e:370:7348

X-Forwarded-For: 203.0.113.195

X-Forwarded-For: 203.0.113.195, 2001:db8:85a3:8d3:1319:8a2e:370:7348

X-Forwarded-For: 203.0.113.195,2001:db8:85a3:8d3:1319:8a2e:370:7348,198.51.100.178

Parsing

Improper parsing of the X-Forwarded-For header can result in spoofed values being used

for security-related purposes, resulting in the negative consequences mentioned above.

There may be multiple X-Forwarded-For headers present in a request. The IP addresses in

these headers must be treated as a single list, starting with the first IP address of the

first header and continuing to the last IP address of the last header. There are two ways

of making this single list:

join the X-Forwarded-For full header values with commas and then split by comma into a list, or

split each X-Forwarded-For header by comma into lists and then join the lists

It is insufficient to use only one of multiple X-Forwarded-For headers.

(Some reverse proxies will automatically join multiple X-Forwarded-For headers into one,

but it is safest to not assume that this is the case.)

Selecting an IP addressWhen selecting an address, the full list of IPs — from all X-Forwarded-For headers — must be used.

When choosing the X-Forwarded-For client IP address closest to the client (untrustworthy

and not for security-related purposes), the first IP from the leftmost that is a valid

address and not private/internal should be selected. ("Valid" because spoofed values

may not be IP addresses at all; "not internal/private" because clients may have used

proxies on their internal network, which may have added addresses from the private IP space.)

When choosing the first trustworthy X-Forwarded-For client IP address, additional

configuration is required. There are two common methods:

Trusted proxy count: The count of reverse proxies between the internet and the

server is configured. The X-Forwarded-For IP list is searched from the rightmost by

that count minus one. (For example, if there is only one reverse proxy, that proxy will

add the client's IP address, so the rightmost address should be used. If there are

three reverse proxies, the last two IP addresses will be internal.)

Trusted proxy list: The IPs or IP ranges of the trusted reverse proxies are

configured. The X-Forwarded-For IP list is searched from the rightmost, skipping all

addresses that are on the trusted proxy list. The first non-matching address is the

target address.

The first trustworthy X-Forwarded-For IP address may belong to an untrusted intermediate

proxy rather than the actual client computer, but it is the only IP suitable for security

uses.

Note that if the server is directly connectable from the internet — even if it is also

behind a trusted reverse proxy — no part of the X-Forwarded-For IP list can be

considered trustworthy or safe for security-related uses.

Specifications

Not part of any current specification. The standardized version of this header is

Forwarded.

See also

Forwarded

X-Forwarded-Host

X-Forwarded-Proto

Via

Help improve MDNWas this page helpful to you?YesNoLearn how to contribute.This page was last modified on Jul 24, 2023 by MDN contributors.View this page on GitHub• Report a problem with this contentMDN logoYour blueprint for a better internet.MDN on MastodonMDN on X (formerly Twitter)MDN on GitHubMDN Blog RSS FeedMDNAboutBlogCareersAdvertise with usSupportProduct helpReport an issueOur communitiesMDN CommunityMDN ForumMDN ChatDevelopersWeb TechnologiesLearn Web DevelopmentMDN PlusHacks BlogMozilla logoWebsite Privacy NoticeCookiesLegalCommunity Participation GuidelinesVisit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.Portions of this content are ©1998–2024 by individual mozilla.org contributors. Content available under a Creative Commons licen

X-Forwarded-For详解、如何获取到客户端IP-CSDN博客

>

X-Forwarded-For详解、如何获取到客户端IP-CSDN博客

X-Forwarded-For详解、如何获取到客户端IP

最新推荐文章于 2023-03-14 16:33:01 发布

码者人生

最新推荐文章于 2023-03-14 16:33:01 发布

阅读量7.9k

收藏

16

点赞数

9

分类专栏:

信息安全

文章标签:

x-forwarded-for

客户端IP

客户端

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/philip502/article/details/122356712

版权

信息安全

专栏收录该内容

36 篇文章

8 订阅

订阅专栏

我们先看看官方定义

X-Forwarded-For

X-Forwarded-For (XFF) 在客户端访问服务器的过程中如果需要经过HTTP代理或者负载均衡服务器,可以被用来获取最初发起请求的客户端的IP地址,这个消息首部成为事实上的标准。在消息流从客户端流向服务器的过程中被拦截的情况下,服务器端的访问日志只能记录代理服务器或者负载均衡服务器的IP地址。如果想要获得最初发起请求的客户端的IP地址的话,那么 X-Forwarded-For 就派上了用场。

这个消息首部会被用来进行调试和统计,以及生成基于位置的定制化内容,按照设计的目的,它会暴露一定的隐私和敏感信息,比如客户端的IP地址。所以在应用此消息首部的时候,需要将用户的隐私问题考虑在内。

HTTP 协议中的 Forwarded 是这个消息首部的标准化版本。

X-Forwarded-For 也是一个电子邮件相关协议中用到的首部,用来表示一封电子邮件是从其他账户转发过来的。

Header typeRequest headerForbidden header nameno

语法

X-Forwarded-For: , ,

具体链接:X-Forwarded-For - HTTP | MDNX-Forwarded-For (XFF) 在客户端访问服务器的过程中如果需要经过HTTP代理或者负载均衡服务器,可以被用来获取最初发起请求的客户端的IP地址,这个消息首部成为事实上的标准。在消息流从客户端流向服务器的过程中被拦截的情况下,服务器端的访问日志只能记录代理服务器或者负载均衡服务器的IP地址。如果想要获得最初发起请求的客户端的IP地址的话,那么 X-Forwarded-For 就派上了用场。https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/X-Forwarded-For

下面我用一张图给大家来描述X-Forwarded-For的采集过程

这个图中一共6个步骤,在用户发起网站访问时,针对x-forwarded-for的重要5个节点已做了描述,

举例是用户访问www.baidu.com

①将家庭局域网转换成小区局域网地址,这里还是局域网,只是更大;

②将小区局域网地址通过SNAT转换成公网地址:36.110.25.116; 

2-3 Dns服务将访问的目标地址转换成具体的ip;

③被访问服务所在机房的入网设备ip:220.181.38.148;

④经过waf服务器:105.16.35.100;

⑤请求到达公司局域网代理服务器 101.25.48.201;

最后到达真正的业务服务器Server。这个时候从Server服务器上采集到的X-Forwarded-For地址如下:

X-Forwarded-For: 36.110.25.116,220.181.38.148,105.16.35.100,101.25.48.201

                                  客户端IP          proxy-ip             proxy-ip            proxy-ip

参考

X-Forwarded-For - HTTP | MDN

X-Forwarded-For 和 X-Real-IP 的区别? - 猪啊美 - 博客园

优惠劵

码者人生

关注

关注

9

点赞

16

收藏

觉得还不错?

一键收藏

打赏

知道了

1

评论

X-Forwarded-For详解、如何获取到客户端IP

X-Forwarded-For(XFF) 在客户端访问服务器的过程中如果需要经过HTTP代理或者负载均衡服务器,可以被用来获取最初发起请求的客户端的IP地址,这个消息首部成为事实上的标准。在消息流从客户端流向服务器的过程中被拦截的情况下,服务器端的访问日志只能记录代理服务器或者负载均衡服务器的IP地址。如果想要获得最初发起请求的客户端的IP地址的话,那么 X-Forwarded-For 就派上了用场。

复制链接

扫一扫

专栏目录

HTTP 请求头中的 Remote_Addr,X-Forwarded-For,X-Real-IP | Spring Cloud 13

gmHappy

03-08

1万+

X-Real-IP是一个自定义`Header`。`X-Real-Ip` 通常被 `HTTP` 代理用来表示与它产生 `TCP` 连接的设备 `IP`,这个设备可能是其他代理,也可能是真正的请求端。需要注意的是,`X-Real-Ip` 目前并不属于任何标准,代理和 `Web` 应用之间可以约定用任何自定义头来传递这个信息。

X-Forwarded-For(`XFF`)是用来**识别**通过**HTTP代理**或**负载均衡**方式连接到`Web`服务器的客户端**最原始的`IP`地址的`HTTP`请求字段。

Chrome插件:X-Forwarded-For Header

12-15

X-Forwarded-For Header插件,此扩展允许您快速设置X-Forwarded-For HTTP标头

1 条评论

您还未登录,请先

登录

后发表或查看评论

x-forward-for获取客户端真实ip

na_tion的专栏

06-22

3万+

文章来源:http://www.360doc.com/myfollow.aspx

先来看一下X-Forwarded-For的定义:

X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。它不是RFC中定义的标准请求头信息,在squid缓存代理服务器开发文档中可以找到该项的

HTTP X-Forwarded-For 介绍

zhoupenghui168的博客

02-10

1482

X-Forwarded-For 是一个 HTTP 扩展头部。HTTP/1.1(RFC 2616)协议并没有对它的定义,它最开始是由 Squid 这个缓存代理软件引入,用来表示 HTTP 请求端真实 IP。如今它已经成为事实上的标准,被各大 HTTP 代理、负载均衡等转发服务广泛使用,并被写入 RFC 7239(Forwarded HTTP Extension)标准之中。

X-Forwarded-For 请求头格式非常简单,就这样:

X-Forwarded-For: client, proxy1, pr

Nginx做代理时X-Forwarded-For信息头的处理

weixin_30443813的博客

10-27

833

如今利用nginx做负载均衡的实例已经很多了,针对不同的应用场合,还有很多需要注意的地方,本文要说的就是在通过CDN 后到达nginx做负载均衡时请求头中的X-Forwarded-For项到底发生了什么变化。下图为简单的web架构图:

先来看一下X-Forwarded-For的定义:X-Forwarded-For:简称XFF头,它代表客户端,也就是HTT...

X-Forwarded-For

yuange

04-25

4705

问题背景

在Web应用开发中,经常会需要获取客户端IP地址。一个典型的例子就是投票系统,为了防止刷票,需要限制每个IP地址只能投票一次。

如何获取客户端IP

在Java中,获取客户端IP最直接的方式就是使用request.getRemoteAddr()。这种方式能获取到连接服务器的客户端IP,在中间没有代理的情况下,的确是最简单有效的方式。但是目前互联网Web应用很少会将应用服务器直接对外提...

X-Forwarded-For注入漏洞实战

Language_Sumuzhe的博客

05-23

7335

题目:X-Forwarded-For注入漏洞实战

知识点:

是HTTP请求头中XFF的伪造和应用,是一道借用XFF来爆破数据库、表、列以及列值的题目。先输入账户为admin,密码为123456进行登录尝试,出现了弹窗,仔细观察弹窗会发现类似IP地址格式的112.111.12.126数据存在,猜测这是服务端记录并显示了客户端的IP地址。

首先了解服务端如何获取客户端请求IP地址?

服务端获取客户端请求IP地址,常见的包括:x-forwarded-for、client-ip等请求头,以及remote_add

php代码审计之x-forwarded-for注入漏洞

cj_Hydra's Blog

02-06

1780

前言:

x-forwarded-for大家应该都不陌生,是用来获取客户端的ip地址的,在实际开发应用中也是非常广泛的,今天这篇博客的主要内容就是x-forwarded-for注入xss代码来获得管理员cookie。

审计的源码还是上次install.php重装漏洞的源码。

步骤:

1.访问正常用户登录页面如下:2.找到源码中对应的文件进行审计,代码如下:

include_once...

Nginx做反向代理和负载均衡时“X-Forwarded-For”信息头的处理

weixin_34242509的博客

03-08

936

一、概述

如今利用nginx做反向代理和负载均衡的实例已经很多了,针对不同的应用场合,还有很多需要注意的地方,本文要说的就是在通过CDN后到达nginx做反向代理和负载均衡时请求头中的“X-Forwarded-For”项到底发生了什么变化。

二、简单web架构图

三、X-Forwarded-For的定义:

X-Forwarded-For:简称XFF头,它代...

服务端获取客户端ip方法

无助的木头人的博客

12-28

9421

X-Forwarded-For

X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。它不是RFC中定义的标准请求头信息,在squid缓存代理服务器开发文档中可以找到该项的详细介绍。标准格式如下:X-Forwarded-For: client1, proxy1, proxy2。

外文名

X...

X-Forwarded-For火狐插件

01-10

X-Forwarded-For火狐插件

使用HTTP_X_FORWARDED_FOR获取客户端IP的严重后果

10-29

我的建议是不要再使用上面的方法去获取客户端IP.即是不要再理会代理情况.

forwarded:解析HTTP X-Forwarded-For标头

05-11

转寄

解析HTTP X-Forwarded-For标头

安装

这是可通过使用的模块。 使用完成 :

$ npm install forwarded

原料药

var forwarded = require ( 'forwarded' )

转发(要求)

var addresses = forwarded ( req )

从请求中解析X-Forwarded-For标头。 以相反的顺序返回地址数组,包括req的套接字地址(即索引0是套接字地址,最后一个索引是最远的地址,通常是最终用户)。

测验

$ npm test

执照

麻省理工学院

获取用户Ip地址通用方法常见安全隐患(HTTP_X_FORWARDED_FOR)

8292669的专栏

05-29

7463

分析过程

这个来自一些项目中,获取用户Ip,进行用户操作行为的记录,是常见并且经常使用的。 一般朋友,都会看到如下通用获取IP地址方法。

function getIP() {

if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {

$realip = $_SERVER['HTTP_X_FORWARDED_FOR'];

} else

HTTP_X_FORWARDED_FOR获取到的IP地址

ccfxue的博客

06-24

1万+

使用“HTTP_X_FORWARDED_FOR”获取到的IP地址,有以下几种情况。

①没有使用代理服务器:

REMOTE_ADDR = 您的 IP

HTTP_VIA = 没数值或不显示

HTTP_X_FORWARDED_FOR = 无数值或不显示

②使用透明代理服务器(Transparent Proxies):

REMOTE_ADDR = 最后一个代理服务器 IP

利用X-Forwarded-For伪造客户端IP漏洞成因及防范

热门推荐

叉叉哥的BLOG

10-15

6万+

问题背景

在Web应用开发中,经常会需要获取客户端IP地址。一个典型的例子就是投票系统,为了防止刷票,需要限制每个IP地址只能投票一次。

如何获取客户端IP

在Java中,获取客户端IP最直接的方式就是使用request.getRemoteAddr()。这种方式能获取到连接服务器的客户端IP,在中间没有代理的情况下,的确是最简单有效的方式。但是目前互联网Web应用很少会将应用服务器直接对外提...

REMOTE_ADDR、HTTP_CLIENT_IP与HTTP_X_FORWARDED_FOR

苏的博客

07-06

1565

REMOTE_ADDR 是跟服务器“握手”的IP,如果使用代理服务器则为代理服务器的IP,没有代理则为客户端的IP。HTTP_CLIENT_IP 是由UserAgent向HTTP头写入的,例如由IE写入,有些UserAgent可能不写HTTP_CLIENT_IP,HTTP_CLIENT_IP可被伪造。HTTP_X_FORWARDED_FOR 仅当使用代理服务器时存在,由代理服务器写入H

X-Forwarded-For 获得用户的真实ip

RAVEEE的博客

07-23

5035

什么是X-Forwarded-For?

X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。它不是RFC中定义的标准请求头信息,在squid缓存代理服务器开发文档中可以找到该项的详细介绍。标准格式如下:X-Forwarded-For: client1, proxy1, proxy2。

如何通过...

Bing申请和使用(最新最全)

一枚嵌入式小白菜的摸爬滚打之路

03-14

4万+

一个问题有10个步骤,直接问这个问题,得到的答案可能不是我们想要的.如果经过仔细分析,发现第8个步骤解决了,整个问题就解决了,直接针对第8个步骤提炼出问题进行提问,就会一下解决整个问题,这个跟专业有关.)://(.*).bing\.com/(.*)^http(s?7.配置插件后,登陆https://www.bing.com/,清缓存,登陆账号,重新登陆https://www.bing.com/点击FILTER按钮,选择Request URL filters,填写.*://www.bing.com/.*

nginx X-Forwarded-For

最新发布

07-28

当请求通过代理服务器或负载均衡器时,X-Forwarded-For头可以帮助服务器获取真实的客户端IP地址。 在Nginx配置中,可以使用proxy_set_header指令来设置X-Forwarded-For头。例如,可以使用以下配置将客户端的IP地址...

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

码者人生

CSDN认证博客专家

CSDN认证企业博客

码龄16年

企业员工

199

原创

1万+

周排名

6932

总排名

75万+

访问

等级

6223

积分

2209

粉丝

119

获赞

80

评论

496

收藏

私信

关注

热门文章

kettle连接mysql错误连接数据库org.pentaho.di.core.exception.KettleDatabaseException

76757

ImportError: No module named yaml解决方案

46833

python 实现日期加1天或减少一天

40403

页面可视化编辑器设计

33790

Kettle数据抽取(转换)出现乱码问题解决方法

24468

分类专栏

信息安全

36篇

互联网大厂技术

5篇

数据安全

1篇

靶场

1篇

flink

4篇

消息队列

8篇

搜索引擎

4篇

go

1篇

数据处理

1篇

异常

1篇

java技术面试题集

9篇

简单报表服务V1.0

javascript

8篇

项目工程构建

5篇

数据库

17篇

.net

13篇

c++

3篇

心态

2篇

python

18篇

linux

6篇

BI-kettle

3篇

BI

4篇

nosql

1篇

java

35篇

大数据-hadoop

9篇

研发管理

6篇

springboot

4篇

运维

2篇

脚本

1篇

产品

4篇

面试题

9篇

最新评论

互联网大厂技术-Nginx-负载均衡探活max_fails和fail_timeout的设置、根据参数转发upstream

Hongba:

官方文档对fail_timeout并不是多次累加,而是在单个fail_timeout周期内对fail进行计数,能否再确认一下?官网链接:https://docs.nginx.com/nginx/admin-guide/load-balancer/http-health-check/

信息安全-数据安全-数据安全平台建设实践

Financial talent:

老师总结的很好,对学习有很大帮助

互联网大厂技术-HTTP请求-Springboot整合Feign更优雅地实现Http服务调用

CSDN-Ada助手:

恭喜你这篇博客进入【CSDN月度精选】榜单,全部的排名请看 https://bbs.csdn.net/topics/616884058。

互联网大厂技术-HTTP请求-Springboot整合Feign更优雅地实现Http服务调用

CSDN-Ada助手:

恭喜你这篇博客进入【CSDN月度精选】榜单,全部的排名请看 https://bbs.csdn.net/topics/616875056。

互联网大厂技术-HTTP请求-Springboot整合Feign更优雅地实现Http服务调用

CSDN-Ada助手:

恭喜你这篇博客进入【CSDN月度精选】榜单,全部的排名请看 https://bbs.csdn.net/topics/616863012。

您愿意向朋友推荐“博客详情页”吗?

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

污点跟踪算法原理

信息安全-应用安全-蚂蚁集团软件供应链安全实践

互联网大厂技术-elasticsearch(es)- 在数据量很大的情况下(数十亿级别)提高查询效率

2024年1篇

2023年15篇

2022年29篇

2021年25篇

2020年24篇

2019年27篇

2018年11篇

2017年1篇

2016年2篇

2015年1篇

2014年25篇

2013年40篇

2012年14篇

2011年2篇

2010年10篇

2009年1篇

2008年1篇

目录

目录

分类专栏

信息安全

36篇

互联网大厂技术

5篇

数据安全

1篇

靶场

1篇

flink

4篇

消息队列

8篇

搜索引擎

4篇

go

1篇

数据处理

1篇

异常

1篇

java技术面试题集

9篇

简单报表服务V1.0

javascript

8篇

项目工程构建

5篇

数据库

17篇

.net

13篇

c++

3篇

心态

2篇

python

18篇

linux

6篇

BI-kettle

3篇

BI

4篇

nosql

1篇

java

35篇

大数据-hadoop

9篇

研发管理

6篇

springboot

4篇

运维

2篇

脚本

1篇

产品

4篇

面试题

9篇

目录

评论 1

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

打赏作者

码者人生

你的鼓励将是我创作的最大动力

¥1

¥2

¥4

¥6

¥10

¥20

扫码支付:¥1

获取中

扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

如何判断网站是否可以使用x-forwarded-for来伪造ip? - 知乎

如何判断网站是否可以使用x-forwarded-for来伪造ip? - 知乎首页知乎知学堂发现等你来答​切换模式登录/注册IP 地址TCP/IPIP网络打造IP如何判断网站是否可以使用x-forwarded-for来伪造ip?关注者4被浏览10,004关注问题​写回答​邀请回答​好问题​添加评论​分享​2 个回答默认排序水边https://youbl.blog.csdn.net​ 关注什么叫伪造IP?x-forwarded-for只是一个Header,通常使用了代理,代理服务器就会给请求的服务器加这个Header,如果你访问网站时,自己加了这个Header,代理服务器还是会再加1个,也就是发送2个 x-forwarded-for 给被请求的服务器。所以,你想问的,就是你自己加的Header,会不会被网站记录为你的真实IP,而抛弃了代理服务器扔过来的x-forwarded-for。这个要看网站的代码实现了。但凡有点安全常识的码农,都会把客户端IP和x-forwarded-for全部记录到日志里。没有安全常识的,就会被你提交的x-forwarded-for给欺骗了。发布于 2020-10-12 16:57​赞同 1​​2 条评论​分享​收藏​喜欢收起​车小帽领域:Python、网络、Linux、安全​ 关注Part1 背景说明记录一次某业务系统被CC攻击,主机处理性能被消耗,造成业务访问缓慢,业务通过防火墙把应用端口映射到公网,文中出现的IP已脱敏。Part2 拓扑结构在防火墙把公网IP:111.111.111.60和端口8007映射到负载IP:172.16.10.10:8007(VIP);负载的后端节点为172.16.10.20(该地址为业务主机IP),F5 LTM旁挂在交换机上,当请求流量到达F5-LTM时会进行源地址替换(即SNAT),默认替换为F5设备的Floating IP(172.16.10.254)地址,由于使用了SNAT应用主机要获取客户端源IP的情况下,在F5转发的时候会插入一个X-Forwarded-For简称 XFF头部,把客户端的真实源IP地址写入XFF。 画了个简略图如下:Part3 故障排查1、故障现象某天正好在上班摸鱼的时候,应用负责人找了过来,反映说业务调用好慢,在应用web页面可以看到提取的源地址为一个私网IP。2、故障定位于是和主机运维人员一起排查,登陆172.16.10.20主机查看会话连接,存在大量未建立成功的TCP会话连接,发起端都是F5的Floating IP(172.16.10.254),这样看会话IP是正常的,但业务在web应用上看到的连接数多的源IP为10.5.2.253(应用层会提取XFF头的IP),查询这个IP在内网是没有路由的,又不是客户端公网源IP,这就有点奇怪了没办法只能一步步查,登陆F5设备后台查看LB负载IP会话连接:show sys connection cs-server-addr 172.16.10.10(VIP)

在会话里面筛选10.5.2.253这个IP,也没有找到这个IP的连接信息。于是想到tcpdump+wireshark大法,在F5设备上和主机端抓包,在F5设备使用tcpdump抓包,命令如下tcpdump -s0 -nni 0.0:nnnp host 172.16.10.10 -w /var/tmp/111.pcap

(-s0是防止包截断,要禁用名称解析,请使用-n标志,-i 指定接口,:nnnp捕获与过滤器相关的 F5 客户端和服务器端的流量)

通过wireshark打开然后在包中搜索IP:10.5.2.253,果然有惊喜,原来客户端送过的报文已经有XFF头部,还有IP值 4. 找到IP就好办了,查看网络层源iP找到真实发起请求的客户端源IP然后在防火墙拒绝掉。在通知应用查看业务状态,此时业务已恢复正常。3、故障总结X-Forwarded-For 是一个 HTTP 扩展头部,用来表示HTTP请求端真实 IP,HTTP/1.1 协议并没有对它的定义,但现如今X-Forwarded-For已被各大 HTTP 代理、负载均衡等转发服务广泛使用。X-Forwarded-For 请求头格式:X-Forwarded-For: client, proxy1, proxy2X-Forwarded-For 请求头的内容由英文逗号和空格隔开,每经过一级代理服务器,X-Forwarded-For 后面就会继续添加该代理设备的IP地址。正常情况下,我们所获得第一个IP应该是客户端 IP,但是如果客户端对 X-Forwarded-For 进行了修改,我们仍旧采用以上方法获得客户端 IP,那么客户端 IP 将会是被伪造过的。Part4 改进措施为了防止IP客户端被伪造,F5设备可以通过IRule来移除客户端送过来的XFF头部,把客户端请求来源IP插入X-Forwarded-For,客户端请求来源IP是不能被伪造的,因为在客户端和服务端进行通信的时候,我们需要进行三次握手,如果这个来源IP是假的,那么我们的握手是不会成功的,Irule规则如下: 用postman伪造XFF头部IP发起请求,经过验证经过F5设备后,客户端送过来的XFF头部移除成功,这里就不在演示。获取Irule规则,可以关注微信公众号:车鱼子沐 ,后台回复“irule”发布于 2022-05-08 18:44​赞同​​添加评论​分享​收藏​喜欢收起​​

X-Forwarded-For - HTTP | MDN

rwarded-For - HTTP | MDNSkip to main contentSkip to searchSkip to select languageMDN Web DocsOpen main menuReferencesReferencesOverview / Web TechnologyWeb technology reference for developersHTMLStructure of content on the webCSSCode used to describe document styleJavaScriptGeneral-purpose scripting languageHTTPProtocol for transmitting web resourcesWeb APIsInterfaces for building web applicationsWeb ExtensionsDeveloping extensions for web browsersWeb TechnologyWeb technology reference for developersGuidesGuidesOverview / MDN Learning AreaLearn web developmentMDN Learning AreaLearn web developmentHTMLLearn to structure web content with HTMLCSSLearn to style content using CSSJavaScriptLearn to run scripts in the browserAccessibilityLearn to make the web accessible to allPlusPlusOverviewA customized MDN experienceAI Help (beta)Get real-time assistance and supportUpdatesAll browser compatibility updates at a glanceDocumentationLearn how to use MDN PlusFAQFrequently asked questions about MDN PlusCurriculumNewBlogPlayAI Help BetaSearch MDNClear search inputSearchThemeLog inSign up for free給開發者的網頁技術文件HTTPX-Forwarded-ForArticle Actions正體中文 (繁體)This page was translated from English by the community. Learn more and join the MDN Web Docs community.Filter sidebarClear filter inputIn this article語法指令示例規範參見

HTTP

Guides

Resources and URIs

Identifying resources on the Web

Data URLs

Introduction to MIME types

Common MIME types

Choosing between www and non-www URLs

HTTP guide

Basics of HTTP

Overview of HTTP

Evolution of HTTP

HTTP Messages

A typical HTTP session

Connection management in HTTP/1.x

Protocol upgrade mechanism

HTTP security

Content Security Policy (CSP)

HTTP Strict Transport Security (HSTS)

X-Content-Type-Options

X-Frame-Options

X-XSS-Protection

Mozilla web security guidelines

Mozilla Observatory

HTTP access control (CORS)

HTTP authentication

HTTP caching

HTTP compression

HTTP conditional requests

HTTP content negotiation

HTTP cookies

HTTP range requests

HTTP redirects

HTTP specifications

Permissions Policy

References

HTTP headers

AcceptAccept-CHAccept-CH-Lifetime

非標準

已棄用

Accept-CharsetAccept-EncodingAccept-LanguageAccept-PatchAccept-PostAccept-RangesAccess-Control-Allow-CredentialsAccess-Control-Allow-HeadersAccess-Control-Allow-MethodsAccess-Control-Allow-OriginAccess-Control-Expose-HeadersAccess-Control-Max-AgeAccess-Control-Request-HeadersAccess-Control-Request-MethodAgeAllowAlt-SvcAlt-UsedAuthorizationCache-ControlClear-Site-DataConnectionContent-DispositionContent-DPR

非標準

已棄用

Content-EncodingContent-LanguageContent-LengthContent-LocationContent-RangeContent-Security-PolicyContent-Security-Policy-Report-OnlyContent-TypeCookieCritical-CH

實驗性質

Cross-Origin-Embedder-PolicyCross-Origin-Opener-PolicyCross-Origin-Resource-PolicyDateDevice-MemoryDigest

非標準

已棄用

DNT

非標準

已棄用

Downlink

實驗性質

DPR

非標準

已棄用

Early-Data

實驗性質

ECT

實驗性質

ETagExpectExpect-CTExpiresForwardedFromHostIf-MatchIf-Modified-SinceIf-None-MatchIf-RangeIf-Unmodified-SinceKeep-AliveLarge-Allocation

非標準

已棄用

Last-ModifiedLinkLocationMax-ForwardsNEL

實驗性質

Observe-Browsing-Topics

實驗性質

非標準

OriginOrigin-Agent-Cluster

實驗性質

Permissions-PolicyPragma

已棄用

Proxy-AuthenticateProxy-AuthorizationRangeRefererReferrer-PolicyReporting-EndpointsRetry-AfterRTT

實驗性質

Save-Data

實驗性質

Sec-Browsing-Topics

實驗性質

非標準

Sec-CH-Prefers-Color-Scheme

實驗性質

Sec-CH-Prefers-Reduced-Motion

實驗性質

Sec-CH-Prefers-Reduced-Transparency

實驗性質

Sec-CH-UA

實驗性質

Sec-CH-UA-Arch

實驗性質

Sec-CH-UA-Bitness

實驗性質

Sec-CH-UA-Full-Version

已棄用

Sec-CH-UA-Full-Version-List

實驗性質

Sec-CH-UA-Mobile

實驗性質

Sec-CH-UA-Model

實驗性質

Sec-CH-UA-Platform

實驗性質

Sec-CH-UA-Platform-Version

實驗性質

Sec-Fetch-DestSec-Fetch-ModeSec-Fetch-SiteSec-Fetch-UserSec-GPC

實驗性質

非標準

Sec-PurposeSec-WebSocket-AcceptServerServer-TimingService-Worker-Navigation-PreloadSet-CookieSet-Login

實驗性質

SourceMapStrict-Transport-SecuritySupports-Loading-Mode

實驗性質

TETiming-Allow-OriginTk

非標準

已棄用

TrailerTransfer-EncodingUpgradeUpgrade-Insecure-RequestsUser-AgentVaryViaViewport-Width

非標準

已棄用

Want-Digest

非標準

已棄用

Warning

已棄用

Width

非標準

已棄用

WWW-AuthenticateX-Content-Type-OptionsX-DNS-Prefetch-Control

非標準

X-Forwarded-For

非標準

X-Forwarded-Host

非標準

X-Forwarded-Proto

非標準

X-Frame-OptionsX-XSS-Protection

非標準

HTTP request methods

CONNECTDELETEGETHEADOPTIONSPATCHPOSTPUTTRACE

HTTP response status codes

100 Continue101 Switching Protocols102 Processing103 Early Hints200 OK201 Created202 Accepted203 Non-Authoritative Information204 No Content205 Reset Content206 Partial Content207 Multi-Status208 Already Reported226 IM Used300 Multiple Choices301 Moved Permanently302 Found303 See Other304 Not Modified307 Temporary Redirect308 Permanent Redirect400 Bad Request401 Unauthorized402 Payment Required403 Forbidden404 Not Found405 Method Not Allowed406 Not Acceptable407 Proxy Authentication Required408 Request Timeout409 Conflict410 Gone411 Length Required412 Precondition Failed413 Content Too Large414 URI Too Long415 Unsupported Media Type416 Range Not Satisfiable417 Expectation Failed418 I'm a teapot421 Misdirected Request422 Unprocessable Content423 Locked424 Failed Dependency425 Too Early426 Upgrade Required428 Precondition Required429 Too Many Requests431 Request Header Fields Too Large451 Unavailable For Legal Reasons500 Internal Server Error501 Not Implemented502 Bad Gateway503 Service Unavailable504 Gateway Timeout505 HTTP Version Not Supported506 Variant Also Negotiates507 Insufficient Storage508 Loop Detected510 Not Extended511 Network Authentication Required

CSP directives

CSP source valuesCSP: base-uriCSP: block-all-mixed-content

已棄用

CSP: child-srcCSP: connect-srcCSP: default-srcCSP: fenced-frame-srcCSP: font-srcCSP: form-actionCSP: frame-ancestorsCSP: frame-srcCSP: img-srcCSP: manifest-srcCSP: media-srcCSP: object-srcCSP: plugin-types

非標準

已棄用

CSP: prefetch-src

非標準

已棄用

CSP: referrer

非標準

已棄用

CSP: report-toCSP: report-uri

已棄用

CSP: require-trusted-types-for

實驗性質

CSP: sandboxCSP: script-srcCSP: script-src-attrCSP: script-src-elemCSP: style-srcCSP: style-src-attrCSP: style-src-elemCSP: trusted-types

實驗性質

CSP: upgrade-insecure-requestsCSP: worker-src

CORS errors

Reason: CORS disabledReason: CORS header 'Access-Control-Allow-Origin' does not match 'xyz'Reason: CORS header 'Access-Control-Allow-Origin' missingReason: CORS header 'Origin' cannot be addedReason: CORS preflight channel did not succeedReason: CORS request did not succeedReason: CORS request external redirect not allowedReason: CORS request not HTTPReason: Credential is not supported if the CORS header 'Access-Control-Allow-Origin' is '*'Reason: Did not find method in CORS header 'Access-Control-Allow-Methods'Reason: expected 'true' in CORS header 'Access-Control-Allow-Credentials'Reason: invalid token 'xyz' in CORS header 'Access-Control-Allow-Headers'Reason: invalid token 'xyz' in CORS header 'Access-Control-Allow-Methods'Reason: missing token 'xyz' in CORS header 'Access-Control-Allow-Headers' from CORS preflight channelReason: Multiple CORS header 'Access-Control-Allow-Origin' not allowed

Permissions-Policy directives

Permissions-Policy: accelerometer

實驗性質

Permissions-Policy: ambient-light-sensor

實驗性質

Permissions-Policy: autoplay

實驗性質

Permissions-Policy: battery

實驗性質

Permissions-Policy: browsing-topics

實驗性質

非標準

Permissions-Policy: cameraPermissions-Policy: display-capturePermissions-Policy: document-domain

實驗性質

Permissions-Policy: encrypted-media

實驗性質

Permissions-Policy: execution-while-not-rendered

實驗性質

Permissions-Policy: execution-while-out-of-viewport

實驗性質

Permissions-Policy: fullscreenPermissions-Policy: gamepad

實驗性質

Permissions-Policy: geolocationPermissions-Policy: gyroscope

實驗性質

Permissions-Policy: hid

實驗性質

Permissions-Policy: identity-credentials-get

實驗性質

Permissions-Policy: idle-detection

實驗性質

Permissions-Policy: local-fonts

實驗性質

Permissions-Policy: magnetometer

實驗性質

Permissions-Policy: microphonePermissions-Policy: midi

實驗性質

Permissions-Policy: otp-credentials

實驗性質

Permissions-Policy: payment

實驗性質

Permissions-Policy: picture-in-picture

實驗性質

Permissions-Policy: publickey-credentials-create

實驗性質

Permissions-Policy: publickey-credentials-getPermissions-Policy: screen-wake-lockPermissions-Policy: serial

實驗性質

Permissions-Policy: speaker-selection

實驗性質

Permissions-Policy: storage-access

實驗性質

Permissions-Policy: usb

實驗性質

Permissions-Policy: web-sharePermissions-Policy: window-management

實驗性質

Permissions-Policy: xr-spatial-tracking

實驗性質

In this article語法指令示例規範參見X-Forwarded-ForX-Forwarded-For(XFF)標頭是辨識用戶端透過 HTTP 代理或負載平衡 IP 位置來源的,事實上的標準。如果流量是在伺服器與用戶端中間擷取,伺服器日誌就只會代理或負載平衡的 IP 位置。如果要檢查用戶端的 IP 的原始來源,就會去檢查 X-Forwarded-For 請求標頭。

這個標頭用於除錯、分析、產生與位置相關的內容、透過設計也洩漏部分隱私資訊,例如用戶端的 IP 位置。因此在部署此標頭時,必須考慮到用戶的隱私。

此 HTTP 標頭的標準化版本為 Forwarded (en-US) 標頭。

X-Forwarded-For 也是個說明 email-message 是從哪個帳戶轉發的 email-header。

標頭屬性

Request header (en-US)

Forbidden header name (en-US)

no

語法httpX-Forwarded-For: , ,

指令

用戶端的 IP 位置

,

如果請求用上了多個代理,則列出每個後續代理的 IP 地址。也就是說,最右邊的 IP 位置,是最新代理的 IP 位置;最左邊的 IP 位置,是用戶端原始來源的 IP 位置。

示例httpX-Forwarded-For: 2001:db8:85a3:8d3:1319:8a2e:370:7348

X-Forwarded-For: 203.0.113.195

X-Forwarded-For: 203.0.113.195, 70.41.3.18, 150.172.238.178

其他非標準變體:

# Used for some Google services

X-ProxyUser-Ip: 203.0.113.19

規範任何版本都沒有被標準化。標準化版本的標頭為 Forwarded (en-US)。參見

Forwarded (en-US)

X-Forwarded-Host (en-US)

X-Forwarded-Proto (en-US)

Via (en-US)

Help improve MDNWas this page helpful to you?YesNoLearn how to contribute.This page was last modified on 2023年6月5日 by MDN contributors.View this page on GitHub• Report a problem with this contentMDN logoYour blueprint for a better internet.MDN on MastodonMDN on X (formerly Twitter)MDN on GitHubMDN Blog RSS FeedMDNAboutBlogCareersAdvertise with usSupportProduct helpReport an issueOur communitiesMDN CommunityMDN ForumMDN ChatDevelopersWeb TechnologiesLearn Web DevelopmentMDN PlusHacks BlogMozilla logoWebsite Privacy NoticeCookiesLegalCommunity Participation GuidelinesVisit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.Portions of this content are ©1998–2024 by individual mozilla.org contributors. Content available under a Creative Commons licen