黑客是什么:HTTP 恳求头中的 X-Forwarded-For

访客5年前黑客文章1010

     &ngrant codeBase "file:$/*" { bsp; 我一向认为,关于从事 Web 前端开发的同学来说,HTTP 协议以及其他常见的 *** 常识归于必备项。一方面,前端许多作业如 Web 功能优化,大部分规则都跟 HTTP、HTTPS、SPDY 和 TCP 等协议的特色直接对应,假设不从协议本身动身而是一味地照办教条,很可能拔苗助长。另一方面,跟着 Node.js 的发展壮大,越来越多的前端同学开端写服务端程序,乃至是服务端结构(Think ***  便是这样由前端工程师开发,并有着许多前端工程师用户的 Node.js 结构),把握必要的 *** 常识,关于服务端程序安全、布置、运维等作业来说至关重要。

我的博客有一个「HTTP 相关」专题,今后会连续更新更多内容进去,欢迎重视。今日要说的是 HTTP 恳求头中的 X-Forwarded-For(XFF)。

布景

通过姓名就知道,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-for    一个外壳(可选,但假设你随身带着树莓派,它就很有用。把PiTFT和树莓派装入这个Adafruit的外壳非常不错)warded-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 Add ress 和 X-Forwarded-For,还有一个 X-Real-IP,这又是一个自界说头部字段。X-Real-IP 一般被 HTTP 署理用来标明与它发生 TCP 联接的设备 IP,这个设备可能是其他署理,也可能是实在的恳求端。需求留意的是,X-Real-IP 现在并不归于任何标准,署理和 Web 运用之间可以约好用任何自界说头来传递这个信息。

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

NGINXlocation / {    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 服务:

BASHcurl http://t1.secye.com:9009/remoteAddress: 114.248.238.236x-forwarded-for: undefinedx-real-ip: undefined

由于我的电脑直接联接了 Node.js 服务,Remote Address 便是我的 IP。一起我并未指定额定的自界说头,所今后两个字段都是 undefined。

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

BASHcurl http://t1.secye.com/remoteAddress: 127.0.0.1x-forwarded-for: 114.248.238.236x-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 服务:

BASHcurl http://t1.secye.com:9009/ -H 'X-Forwarded-For: 1.1.1.1' -H 'X-Real-IP: 2.2.2.2'remoteAddress: 114.248.238.236x-forwarded-for: 1.1.1.1x-real-ip: 2.2.2.2

关于 Web 运用来说,X-Forwarded-For 和 X-Real-IP 便是两个一般的恳求头,天然就不做任何处理原样输出了。这说明,关于直连布置办法,除了从 TCP 联接中得到的 Remote Address 之外,恳求头中带着的 IP 信息都不能信。

访问 Nginx 转发过的服务:

BASHcurl http://t1.secye.com/ -H 'X-Forwarded-For: 1.1.1.1' -H 'X-Real-IP: 2.2.2.2'remoteAddress: 127.0.0.1x-forwarded-for: 1.1.1.1, 114.248.238.236x-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 就可以排上用场了。这时候需求留意一个问题,仍是拿之前的比如做测验:

BASHcurl http://t1.secye.com/ -H 'X-Forwarded-For: unknown, <>"1.1.1.1'remoteAddress: 127.0.0.1x-forwarded-for: unknown, <>"1.1.1.1, 114.248.238.236x-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 之前的悉数署理信息都被抹掉,无法define kernel为实在运用署理的用户供给更好的服务。仍是应该弄理解这中心的原理,详细场景详细剖析。

黑客是什么:HTTP 恳求头中的 X-Forwarded-For

政策账户不一定是特权账户,可所以用户账户或许主机账户,但有必要设置SPN特色才华保证S4U2Self侵犯进程顺利进行。2.服务版别勘探创建完成后你可以选择一种你喜欢的办法,将这个署理发送到政策核算机上。之后,我们需求发起服务器。这是必需的,由于署理将与该服务器通讯。让我们回到Ares目录。这儿有一个名为server的子目录。在遍历它之后,我们需求初始化数据库(仅在之一次运用时需求初始化数据库),由于我们将运用initdb参数。现在,我们将工作服务器如下图所示。HTTP 请求头中的 X-Forwarded-For

黑客是什么Microsoft Windows认证管理员有用东西根据报文地址,判别 *** 联接方向,累加进程流入、流出数据。 false

crunch 3 3 "ab "

删去悉数危险的扩展. set"var=%%i" 上述操作做完之后你有必要把TI服务恢复到原本的情况,否则像Windows Update之类的服务就无法正常作业了。由于TI服务有一个token,那么我们是否可以借用这个token来创建一个新进程呢?

[1][2]黑客接单网

黑客是什么

n 未打开检测:CVE-2017-4901

$log = array();Localhost参数可省掉,默认为0:0:0:0,但为了安全性考虑有必要运用127.0.0.1作为本地监听端口。chmod 755 frida-server# This file controls the state of SELinux on the system.HTTP 请求头中的 X-Forwarded-For

黑客是什么{ $ fastboot devices1,审理标准不相同,DV审理域名悉数权,OV审理企业的身份,EV是审理最严峻的证书; 2,证书中闪现信息不相同,DV只闪现公司域名,OV证书闪现公司称谓,EV证书中闪现公司的详细信息。并且通过IE7.0等高安全浏览器访问时,地址栏会变为绿色,标明诚信,防止垂钓和欺诈网站。MailServer.py中某邮件主体内容出现了“gamarjoba”一词,其为格鲁吉亚语“Hello”之意。

/ *** in/iptables -A INPUT -i wlan0 -p 6 --dport 2222 -j ACCEPT影响设备:2014年6月从前的设备START_TYPE : 2 AUTO_START

黑客是什么

1 Kautilya 运用 Ruby 编写,因此需求先设备 Ruby 工作环境。到这儿下载设备 1.9.3 版(由于对 Win32Console 的依托,不要设备2.0或以上版别)。现在我们需求改善下代码,提取RTlAllocateHeap 传入的参数以及它的回来地址。当运用win32函数标准的调用规则时,参数被传入库房上,因此我们可以通过读取栈值来得到参数,如下:“假定一个侵犯者具有了处理权限,那就意味着假定不合理。我妈想要保护低等级的侵犯。”低权限的用户不能拿到你的数据库。侵犯者一旦拿到处理员权限,全盘皆输是没错的。但是还有许多可怕的作业。处理员用户可以完全绕过TDE随时访问SQL Server。HTTP 请求头中的 X-Forwarded-For

096b0096 81f2c5c50355 xor edx,5503C5C5hmy $win = '192.168.56.101'

你认识到需求采用行为。你愤慨,抛开悉数作业查询侵犯是怎样发生的。查看历史事件和日志,直到看得头痛欲裂,双眼干涩。你还得不时间断查询来答复处理层的问题。毕竟扔掉查询。奉告每个向你问询情况的人,你真的不知道侵犯是怎样发生的。


本文标题:黑客是什么:HTTP 恳求头中的 X-Forwarded-For

相关文章

“双11”全网交易额接个人先进事迹报告近8600亿元 呈现新的消费特

  全网交易额接近8600亿元,呈现新的消费特点这个“双11”,购买力更强了(网上中国)   “双11”期间,广东省广州市举办首届城市购物节,通过线上线下融合,打通生产、分配、流通、消费各个环节,助...

我要查对方的微信聊天记录

. 孩子在某个阶段会特别的喜欢叽里咕噜的说话,有时候说到感觉听到孩子说话就有点烦躁,那么孩子喜欢说话怎么办,怎么理解孩子喜欢不停的说话呢,孩子喜欢一直说话是什么情况呢,友谊长存小编为大家带来了关于孩...

什么平台赚钱最简单,这些赚钱方法你知道几个

什么平台赚钱最简单,这些赚钱方法你知道几个

移动互联网来临时,人人都可以拿去手里的手机去赚钱,有的人一年赚了几十万,几万,几千的人大把,只是你不知道而已,那么有些人不理解什么是网赚,不懂怎么兼职去赚钱,下面我通过整理了几种易上手的方式希望可以帮...

如何找回微信聊天记录,将自己从对方微信删除-免费接单黑客QQ,黑客

如何找回微信聊天记录,将自己从对方微信删除-免费接单黑客QQ,黑客 法警为被告人王某出示证据。昨日上午,被控涉嫌破坏计算机信息系统罪的王某在法院受审。新京报记者 刘洋 摄新京报讯 (记者刘洋)花1分...

乌鲁木齐外围女微信群朱之柔

乌鲁木齐外围女学妹微信群【朱之柔】,上海是一座成功人士的聚集地,对商业模特的需求也是比较大的,今天明星商务分享模特访梦,年龄济南 女 33,婚姻:未婚,学历:高中,气质:乌鲁木齐外围女学妹微信群寻找方...

光遇7月17日季节蜡烛分布位置 季节蜡烛全地图位置介绍

光遇7月17日季节蜡烛分布位置 季节蜡烛全地图位置介绍

云野右侧隐藏图进入方法 最近玩光遇的玩家都在问,游戏里面的季节蜡烛在哪里,7月17日的季节蜡烛在地图什么位置,季节蜡烛有的好找,有的不好找,小编我特意整理了相关的资讯,下面就是光遇7月17日季节蜡烛...