Headers和如何查看HTTPhigig2报文的头部部信息

博客分类:
构造 HTTP请求
实现“伪造来源
在阅读本文前,大家要有一个概念,在实现正常的 双方通信情况下,是无法伪造来源
的,也就是说,在
协议中,可以伪造数据包来源
,但这会让发送出去的数据包有去无回,无法实现正常的通信。这就像我们给对方写信时,如果写出错误的发信人地址,而收信人按信封上的发信人地址回信时,原发信人是无法收到回信的。
一些 攻击,如
就是利用了
的此缺陷而实现攻击的。《计算机网络》教材一书上,对这种行为定义为“发射出去就不管”。
因此,本文标题中的伪造来源 是带引号的。并非是所有
应用程序中存在此漏洞。
那么在 中,
又是如何造成的?如何防御之?
在理解这个原理之前,读者有必要对 协议有所了解。
是一个应用层协议,基于请求
响应模型。客户端(往往是浏览器)请求与服务器端响应一一对应。
请求信息由请求头和请求正文构成(在 请求时,可视请求正文为空)。请求头类似我们写信时信封上的基本信息,对于描述本次请求的一些双方约定。而请求正文就类似于信件的正文。服务器的响应格式,也是类似的,由响应头信息和响应正文构成。
为了解这个原理,可使用 或
浏览器插件
响应数据。
本文中,以 为例说明之。安装
浏览器后,
的工具栏上出现其图标,点击并运行
就会在浏览器下方显示出
的主界面。
点击左下角红色的“ ”按钮,并在地址栏输入
等页面打开后,选中一个请求,并在下方的
按钮中选择“
”,如图:
左边即是请求数据,右边即是服务器响应数据。左边的请求头均以回车换行结束,即“ ”
最后是一个空行(内容为
结束。而请求
中除第一行外,其它行均由
值组成,如
名称与值之间有冒号相隔,之间的空格是可有可无的。
那么,在 应用程序中,如何取得指定的请求
信息呢?这里使用
语言为例说明。对所有客户端请求
程序中取得其值的方式如下:
$_SERVER['HTTP_ HEADER_NAME ']
HEADER_NAME应该以换成对应的
名称,此项的规律是:全大写,连接线变成下划线。比如要取得客户端的
请求头,则使用
掌握这个规律,即可达到举一反三的效果。如要取得
信息,则使用
即可。也就是说,
数组中,以
开头的项均属于客户端发出的信息。
回归到 应用程序层,来源
的重要性不言而语,例如表单提交限制,频率等等均需要客户端
信息。使用流行的
中的代码片断:
private function _get_client_ip() {
$ip = $_SERVER['REMOTE_ADDR'];
if (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
如以下的JSP代码片段:public String getIpAddr(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
以上代码片段即是获取客户端 ,这段程序会尝试检查
根据之前的原理说明,以
均属于客户端发送的内容。那么,如果客户端伪造
,不就可以欺骗此程序,达到“伪造
”之目的?
那么如何伪造这项值?如果你会写程序,并了解 协议,直接伪造请求
即可。或者使用
插件即可。
按图示顺序号输入或点击相应按钮。 按钮这里变为红色
,说明设置成功。
这时,如果我们使用 访问其它网站,网站服务器就针接收到我们伪造的
严格意义上讲,这并不是程序中的漏洞。 为了保持较好的环境兼容性
包含有反向代理的
服务器环境,如
的前端代理
,如此处理是可以理解的。那么如何处理,才能杜绝这个问题呢?
服务器重新配置 为正确的值。
如对典型的 环境(
是否位于同一机器,并不妨碍此问题的产生)
进程直接通信:
切记, 是由
的参数,就代表了与当前
直接通信的客户端的
(是不能伪造的)。
再比如,存在中间层代理服务器的环境:
这种情况下,后端的 文件服务器上获取取的
永远是前端的
服务器的通信
服务器集群之间的通信,是可以信任的。我们要做的就是在离用户最近的前端代理上,强制设定 的值,后端所有机器不作任何设置,直接信任并使用前端机器传递过来的
即在最前端的 上设置:
^/static {
proxy_pass
proxy_set_header X-Forward-For $remote_
如果最前端(与用户直接通信)代理服务器是与 直接通信,则需要在其上设定:
location ~ "\.+\.php$" {
fastcgi_pass localhost:9000;
fastcgi_param
HTTP_X_FORWARD_FOR
的内置变量,代表了客户端真实(网络传输层)
。通过此项措施,强行将
设置为客户端
使客户端无法通过本文所述方式“伪造
LVS转发环境下,是否存在此问题?
LVS工作在网络层,不改变来源及目标
,更不可能更改应用层信息,故不存在此问题。如果有任何疑惑或需要帮助,请联系笔者信箱 。
存在此问题的程序
所有版本的 。以及其它可能未知的程序。
例如使用 进行
伪装之后再登录
,我们查看自己的个人资料中的“上次访问
”就发现就是我们伪装的数据。
可以说,互联网上存在此漏洞的网站实在是太多了。试试便知。那么对于存在此漏洞,并且使用 作限制的网站,一定要小心。
浏览 200111
浏览: 779351 次
来自: 北京
除了 libmysql 和 mysqlnd, 在 linux
很不错的!力荐!
楼主,你好,我配置了一个负载均衡集群两台服务器,都可以启动ke ...
完全不经过脑子考虑
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'存放平时遇到的问题资料,有需要的尽管拿走。
Google Chrome/IE/FireFox查看HTTP请求头request header响应头response header|审查元素Network空的不显示
来自:http://1.snowson.sinaapp.com/?p=359
chrome查看网页header,鼠标右键打开审查元素,或快捷键Shift+Ctrl+I或者shift+ctrl+c
当我打开Network后,发现里面是空的什么也没有。
查了下,才知,需要刷新页面才能显示出来。
想了想也是应该,只有重新载入网页,chrome才能捕获header信息。
据说这个功能很好很强大,可以用来找到隐藏的视频文件源地址。很多非专业人士用审查元素好像也就是来干这个。
IE和FireFox查看页面header信息需要插件
IE:HttpWatch,Fiddler2
FireFox:Firebug
————————
chrome如何查看网页header信息
1,Shift+Ctrl+I 调出 我们牛逼的,性感代码式的调试工作台~~
2,然后载入网页.
3,再然后,去看Network信息…
4,亮点来了,点击Network信息的第一个玉米.
使用chrome浏览器自带的开发者工具查看http头的方法
1.在网页任意地方右击选择审查元素或者按下 shift+ctrl+c打开chrome自带的调试工具;
2.选择network标签,刷新网页(在打开调试工具的情况下刷新);
3.刷新后在左边找到该网页url,点击 后右边选择headers,就可以看到当前网页的http头了;
请求Header(HTTP request header )
Host 请求的域名
User-Agent 浏览器端浏览器型号和版本
Accept 可接受的内容类型
Accept-Language 语言
Accept-Encoding 可接受的压缩类型 gzip,deflate
Accept-Charset 可接受的内容编码 UTF-8,*
服务器端的响应Header(response header)
Date 服务器端时间
Server 服务器端的服务器软件 Apache/2.2.6
Etag 文件标识符
Content-Encoding传送启用了GZIP压缩 gzip
Content-Length 内容长度
Content-Type 内容类型
响应Headers,我们应该时刻留意它们。这些信息无法直接获取,需要依靠第三方工具。
阅微堂张志强
Chrome快捷键
Ctrl + Shift +B :打开书签管理器
Ctrl + Shift + T :恢复已关闭的标签页(最多恢复10项)
CTRL + D:当前页添加为书签
Ctrl + U:查看源文件
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!HTTP响应头和请求头信息对照表
HTTP Request Header 请求头
指定客户端能够接收的内容类型
Accept: text/plain, text/html
Accept-Charset
浏览器可以接受的字符编码集。
Accept-Charset: iso-8859-5
Accept-Encoding
指定浏览器可以支持的web服务器返回内容压缩编码类型。
Accept-Encoding: compress, gzip
Accept-Language
浏览器可接受的语言
Accept-Language: en,zh
Accept-Ranges
可以请求网页实体的一个或者多个子范围字段
Accept-Ranges: bytes
Authorization
HTTP授权的授权证书
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Cache-Control
指定请求和响应遵循的缓存机制
Cache-Control: no-cache
Connection
表示是否需要持久连接。(HTTP 1.1默认进行持久连接)
Connection: close
HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器。
Cookie: $Version=1; Skin=
Content-Length
请求的内容长度
Content-Length: 348
Content-Type
请求的与实体对应的MIME信息
Content-Type: application/x-www-form-urlencoded
请求发送的日期和时间
Date: Tue, 15 Nov :31 GMT
请求的特定的服务器行为
Expect: 100-continue
发出请求的用户的Email
指定请求的服务器的域名和端口号
Host: www.zcmhi.com
只有请求内容与实体相匹配才有效
If-Match: “c284d8af7add”
If-Modified-Since
如果请求的部分在指定时间之后被修改则请求成功,未被修改则返回304代码
If-Modified-Since: Sat, 29 Oct :31 GMT
If-None-Match
如果内容未改变返回304代码,参数为服务器先前发送的Etag,与服务器回应的Etag比较判断是否改变
If-None-Match: “c284d8af7add”
如果实体未改变,服务器发送客户端丢失的部分,否则发送整个实体。参数也为Etag
If-Range: “c284d8af7add”
If-Unmodified-Since
只在实体在指定时间之后未被修改才请求成功
If-Unmodified-Since: Sat, 29 Oct :31 GMT
Max-Forwards
限制信息通过代理和网关传送的时间
Max-Forwards: 10
用来包含实现特定的指令
Pragma: no-cache
Proxy-Authorization
连接到代理的授权证书
Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
只请求实体的一部分,指定范围
Range: bytes=500-999
先前网页的地址,当前请求网页紧随其后,即来路
Referer: http://www.zcmhi.com/archives/71.html
客户端愿意接受的传输编码,并通知服务器接受接受尾加头信息
TE: trailers,q=0.5
向服务器指定某种传输协议以便服务器进行转换(如果支持)
Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
User-Agent
User-Agent的内容包含发出请求的用户信息
User-Agent: Mozilla/5.0 (L X11)
通知中间网关或代理服务器地址,通信协议
Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)
关于消息实体的警告信息
Warn: 199 Miscellaneous warning
HTTP Responses Header 响应头
Accept-Ranges
表明服务器是否支持指定范围请求及哪种类型的分段请求
Accept-Ranges: bytes
从原始服务器到代理缓存形成的估算时间(以秒计,非负)
对某网络资源的有效的请求行为,不允许则返回405
Allow: GET, HEAD
Cache-Control
告诉所有的缓存机制是否可以缓存及哪种类型
Cache-Control: no-cache
Content-Encoding
web服务器支持的返回内容压缩编码类型。
Content-Encoding: gzip
Content-Language
响应体的语言
Content-Language: en,zh
Content-Length
响应体的长度
Content-Length: 348
Content-Location
请求资源可替代的备用的另一地址
Content-Location: /index.htm
Content-MD5
返回资源的MD5校验值
Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ==
Content-Range
在整个返回体中本部分的字节位置
Content-Range: bytes /47022
Content-Type
返回内容的MIME类型
Content-Type: text/ charset=utf-8
原始服务器消息发出的时间
Date: Tue, 15 Nov :31 GMT
请求变量的实体标签的当前值
ETag: “c284d8af7add”
响应过期的日期和时间
Expires: Thu, 01 Dec :00 GMT
Last-Modified
请求资源的最后修改时间
Last-Modified: Tue, 15 Nov :26 GMT
用来重定向接收方到非请求URL的位置来完成请求或标识新的资源
Location: http://www.zcmhi.com/archives/94.html
包括实现特定的指令,它可应用到响应链上的任何接收方
Pragma: no-cache
Proxy-Authenticate
它指出认证方案和可应用到代理的该URL上的参数
Proxy-Authenticate: Basic
应用于重定向或一个新的资源被创造,在5秒之后重定向(由网景提出,被大部分浏览器支持)
Refresh: 5; url=
http://www.zcmhi.com/archives/94.html
Retry-After
如果实体暂时不可取,通知客户端在指定时间之后再次尝试
Retry-After: 120
web服务器软件名称
Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)
Set-Cookie
设置Http Cookie
Set-Cookie: UserID=JohnD Max-Age=3600; Version=1
指出头域在分块传输编码的尾部存在
Trailer: Max-Forwards
Transfer-Encoding
文件传输编码
Transfer-Encoding:chunked
告诉下游代理是使用缓存响应还是从原始服务器请求
告知代理客户端响应是通过哪里发送的
Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)
警告实体可能存在的问题
Warning: 199 Miscellaneous warning
WWW-Authenticate
表明客户端请求实体应该使用的授权方案
WWW-Authenticate: Basic
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!博客分类:
HTTP 请求头 Header
&&& Accept:浏览器可接受的MIME类型。
&&& Accept-Charset:浏览器可接受的字符集。
  Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间。
  Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。
  Authorization:授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中。
  Connection:表示是否需要持久连接。如果Servlet看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。要实现这一点,Servlet需要在应答中发送一个Content-Length头,最简单的实现方法是:先把内容写入ByteArrayOutputStream,然后在正式写出内容之前计算它的大小。
  Content-Length:表示请求消息正文的长度。
  Cookie:这是最重要的请求头信息之一
  From:请求发送者的email地址,由一些特殊的Web客户程序使用,浏览器不会用到它。
  Host:初始URL中的主机和端口。
  If-Modified-Since:只有当所请求的内容在指定的日期之后又经过修改才返回它,否则返回304“Not Modified”应答。
  Pragma:指定“no-cache”值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝。
  Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。
&&& User-Agent 浏览器端浏览器型号和版本
服务器端的响应Header(response header)
& Date 服务器端时间
& Server 服务器端的服务器软件 Apache/2.2.6
& Etag 文件标识符
& Content-Encoding传送启用了GZIP压缩 gzip
& Content-Length 内容长度
& Content-Type 内容类型
浏览: 13299 次
来自: 上海
复习java基础?
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'}

我要回帖

更多关于 udp报文头部 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信