比特派官方下载安装|xff
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号 京公网安备110000020000XFF漏洞攻击原理及防御方案 - 知乎
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渗透测试信息安全网络安全赞同 163 条评论分享喜欢收藏申请
百度知道 - 信息提示
百度知道 - 信息提示
百度首页
商城
注册
登录
网页
资讯
视频
图片
知道
文库
贴吧采购
地图更多
搜索答案
我要提问
百度知道>提示信息
知道宝贝找不到问题了>_
该问题可能已经失效。返回首页
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 alsoHTTP
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赞同 12 条评论分享收藏喜欢收起车小帽领域: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