转载:http://www.cnblogs.com/CareySon/archive/2009/12/14/1623624.html 为了看到从服务器和浏览器之间通信的HTTP头,你需要在浏览器安装一些插件....比如说Fiddler就是一个微软发布的免费的用于记录HTTP日志的软件。...而这些HTTP日志会包含HTTP头,在这篇文章中我会假设读者已经熟悉了这个软件,假如你并不熟悉这个软件的话,我推荐阅读Troubleshooting Website Problems by Examining...使用Fiddler,找一个使用IIS和Asp.net的Web服务器,比如微软asp.net官方网站,通常在默认情况下,HTTP响应头会包含3个Web服务器的自身识别头....MVC的话): X-AspNetMvc-Version:1.0 这些服务器自身识别信息在大多数情况下并不会被浏览器使用,因此可以被安全的移除,这篇文章的余下部分将会讲述如何移除这些HTTP头
而这篇文章就来讲如何删除这些不必要的HTTP响应头....观察Web服务器的HTTP响应头 为了看到从服务器和浏览器之间通信的HTTP头,你需要在浏览器安装一些插件.比如说Fiddler就是一个微软发布的免费的用于记录HTTP日志的软件。...中,因此,我们需要将这个HTTP头从IIS的配置中删除,如果你的网站是在共享的环境下并且没有使用IIS7并使用管道模式,你不得不为此联系你的空间提供商来帮你移除。...目录 在Website上点击右键并在弹出的菜单中选择属性 选择HTTP Header标签,所有IIS响应中包含的自定义的HTTP头都会在这里显示,只需要选择响应的HTTP头并点击删除就可以删除响应的HTTP...而在IIS7中移除X-Powered-By HTTP头的方法是: 启动IIS Manager 展开Website目录 选择你需要修改的站点并双击HTTP响应头部分 所有的自定义HTTP头全在这里了,删除相应的头仅需要点击右边的
(1) Content-Length:HTTP协议中的一个头部字段,用于指示请求或响应消息体的长度(以字节为单位),它主要用于告诉接收方需要接收的数据的准确大小以便正确解析和处理消息,例如: POST...请求中的标头,则可能会导致歧义 如果请求头以某种方式被混淆,支持Transfer-Encoding标头的服务器可能会被诱导不去处理它 总而言之,如果前端和后端服务器对于(可能是混淆的)Transfer-Encoding...标头的行为不同,那么它们可能对连续请求之间的边界存在分歧,从而导致请求走私漏洞 走私检测 经典的请求走私主要涉及Content-Length和Transfer-Encoding两个头信息,通过更改其数值并将其放入单个...HTTP/1请求中对其进行请求测试操作,观察是否可以从前后的数据包中得到意外响应,常见的前后端请求处理方式有以下几种类型: CL.TE:前端服务器使用Content-Length头,后端服务器使用Transfer-Encoding...头 TE.CL:前端服务器使用Transfer-Encoding标头,后端服务器使用Content-Length标头 TE.TE:前端和后端服务器都支持Transfer-Encoding标头,但是可以通过以某种方式模糊标头来诱导其中一个服务器不处理它
经常抓包的人可能会关注到两个标头:Transfer-Encoding和Content-Length,前一个是指分块的标头而后一个便是长度的标头,在HTTP规范中指出,当同时指定了Transfer-Encoding...:chunked和Content-Length标头时,服务器应始终将分块编码的优先级高于Content-Length的大小。...但是,如果有多个反向代理同时内联到指定HTTP连接的TE和CL标头,有时前端服务器可能无法识别TE标头并使用CL处理,而后端服务器却可以识别TE标头并优先于CL处理。...TE.TE:前端服务器和后端服务器均支持Transfer-Encoding标头,但是可以通过某种方式混淆标头来诱导其中一台服务器不对其进行处理。...TE.TE顾名思义,前端和后端服务器都支持Transfer-Encoding标头,但是可以通过某种方式混淆标头来诱导其中一台服务器不对其进行处理。
: localhost",修改后的请求数据包如下并请求两次: 从上面可以看到这里由于第二个请求的主机头与第一个请求中走私的主机头冲突,从而导致请求被阻塞,随后发送以下请求两次以便将第二个请求的标头附加到走私的请求正文中...,前端服务器不支持分块编码,在/admin有一个管理面板,但是只有IP地址为127.0.0.1的人才能访问,前端服务器向包含IP地址的传入请求添加HTTP头,它类似于X-Forwarded-For标头,...Content-Length: 10 Connection: close x=1 第一个报文显示结果如下: 第二个请求中显示直接进入Admin面板 并发现两个用户和对应的删除操作选项 随后我们直接使用前面的响应作为参考...首先访问上面的靶场地址,随意点击一个blog并进行评论操作 确定评论有效 随后将请求的Content-Length增加到600,然后将其偷偷发送到后端服务器,从响应中可以看到请求走私的内容 然后改为800...User-Agent标头反射的XSS的攻击,为了解决这个实验,你需要向后端服务器发送一个请求,使下一个用户的请求收到一个响应,该响应包含一个执行alert(1)的XSS漏洞 演示过程: Step 1:直接访问上面的靶场地址
HTTP 请求走私漏洞是怎么产生的 绝大多数 HTTP 请求走私漏洞的出现是因为 HTTP 规范提供了两种不同的方法来指定请求的结束位置:Content-Length 头和 Transfer-Encoding...某些服务器虽然支持 Transfer-Encoding 头,但是可以通过某种方式进行混淆,以诱导不处理此标头。...TE.TE:前端服务器(转发服务)和后端服务器都使用 Transfer-Encoding 头,但是可以通过某种方式混淆标头来诱导其中一个服务器不对其进行处理。...TE.TE 混淆 TE 头 前端服务器(转发服务)和后端服务器都使用 Transfer-Encoding 头,但是可以通过某种方式混淆标头来诱导其中一个服务器不对其进行处理。...前端服务器(转发服务)将会重写请求以添加标头,然后后端服务器将处理走私请求,并将第二个请求当作 email 参数的值,且在响应中反映出来: <input id="email" value="POST /
HTTP/1请求时,\r\n将再次被解释为标头分隔符,因此HTTP/1后端服务器会看到两个不同的头: Foo: bar Transfer-Encoding: chunked 靶场示例 靶场地址: https...,其实HTTP/1和HTTP/2都可以实现请求隧道,但是在只有HTTP/1的环境中检测起来要困难得多,由于HTTP/1中持久(保持活动)连接的工作方式,即使您确实收到了两个响应,这也不一定能确认请求被成功走私...5:在请求的Body中将任意字符附加到原始搜索参数,直到请求长度超过走私的Content-Length头,发送请求就可以看到响应中出现了前端服务器附加到我们请求的标头信息 Content-Length...这是因为请求资源的内容长度比我们试图读取的隧道响应长,随后更改:path伪标头,使其指向返回较短资源的端点,在这种情况下我们可以使用/login,随后在响应中找到删除carlos的URL,然后相应地更新隧道请求中的路径并重新发送完成解题...alert(1) HTTP/1.1\r\n Foo: bar Step 6:从上面可以注意到请求超时了,这是因为主响应中的Content-Length头比隧道请求的嵌套响应长
请求标头、响应标头,现在我们来对这几种标头进行介绍 通用标头 HTTP 通用标头之所以这样命名,是因为与其他三个类别不同,它们不是限定于特定种类的消息或者消息组件(请求,响应或消息实体)的。...通用标头、请求标头、响应标头 和 实体标头;还可以按照是否被缓存分为 端到端首部(End-to-End) 和 逐跳首部(Top-to-Top)。...例如下面这种写法 Server: Apache/2.4.1 (Unix) Vary Vary HTTP 响应标头确定如何匹配请求标头,以决定是否可以使用缓存的响应,而不是从原始服务器请求一个新的响应。...实体标头 实体标头用于HTTP请求和响应中,例如 Content-Length,Content-Language,Content-Encoding 的标头是实体标头。...实体标头不局限于请求标头或者响应标头,下面例子中,Content-Length 是一个实体标头,但是却出现在了请求报文中 POST /myform.html HTTP/1.1 Host: developer.mozilla.org
也就是说多个人的流量可能会在前后端之间的同一个tcp会话中传输,另外前后端对于Content-Length和Transfer-Encoding的解析处理方法不同,有可能造成请求污染的情况,直接导致HTTP...--- 从http协议说起 HTTP是一种无状态的、应用层的、以请求/应答方式运行的协议,它使用可扩展的语义和自描述消息格式,与基于网络的超文本信息系统灵活的互动。...不过,当前的大多数浏览器只支持 GET 和 POST,Spring 3.0 提供了一个 HiddenHttpMethodFilter ,允许你通过“_method”的表单参数指定这些特殊的 HTTP 方法...上面我们说到了HTTP协议的基本原理,其中一个HTTP请求中可以有多种方式来指定消息的长度,比如:Content-Length、Transfer-Encoding。...HTTP规范(RFC2616)中定义,如果接收的消息同时包含传输编码头字段(Transfer-Encoding)和内容长度头(Content-Length)字段,则必须忽略后者。
通用标头、请求标头、响应标头 和 实体标头;还可以按照是否被缓存分为 端到端首部(End-to-End) 和 逐跳首部(Top-to-Top)。...Transfer-Encoding 所有可选类型如下 chunked:数据按照一系列块发送,在这种情况下,将省略 Content-Length 标头,并在每个块的开头,需要以十六进制填充当前块的长度,...例如下面这种写法 Server: Apache/2.4.1 (Unix) Vary Vary HTTP 响应标头确定如何匹配请求标头,以决定是否可以使用缓存的响应,而不是从原始服务器请求一个新的响应。...实体标头 实体标头用于HTTP请求和响应中,例如 Content-Length,Content-Language,Content-Encoding 的标头是实体标头。...实体标头不局限于请求标头或者响应标头,下面例子中,Content-Length 是一个实体标头,但是却出现在了请求报文中 POST /myform.html HTTP/1.1 Host: developer.mozilla.org
Keep-alive 这个的话就是在HTTP请求中增加一个特殊的请求头Connection: Keep-Alive,其作用是告诉服务器接受完信息后,不要关闭TCP连接,后续对相同目标服务器的请求,一律采用这个...Content-Length头,不进行处理。...,这两个服务器以不同的方式处理重复的 HTTP 请求标头。...应用程序在User-Agent这个标头含有反射型XSS漏洞。 题目要求 目标是让用户收到一个alert(1)的弹框。...接下来从题目中进行进一步理解。 题目描述 本实验涉及前端和后端服务器,前端服务器不支持分块编码。前端服务器被配置为缓存某些响应。
适配器也可能使用window.location和window.history在浏览器中合成HTTP请求,或者它可能直接将请求从HTTP客户端传递到Shelf处理程序。...如果基础请求使用分块传输编码,则适配器必须先解码主体,然后再将其传递给新的shelf.Request,并应删除Transfer-Encoding标头。...提供Content-Length标头。 Content-Type标头指示MIME类型multipart / byteranges。...Transfer-Encoding标头设置为identity以外的任何其他标头。...提供Content-Length标头。
= null); } 该过滤器会检查请求上下文中是否包含请求响应相关的头信息(zuulResponseHeaders)、响应数据流(responseDataStream)或是响应体(responseBody...(原始响应头)、originContentLength(原始响应实体长度)、zuulResponseHeaders(从originResponseHeaders中过滤了部分header信息,具体看下面isIncludedHeader...而且响应没有被gzipped压缩时,才插入Content-Length。...中没看到设置Content-Length的代码,也没设置 transfer-encoding,那么是在哪里作处理的呢,调试代码可知,是在org.apache.pache.catalina.connector.ResponseFacade...因此,我们关闭HTTP响应而不是关闭InputStream。 先写到这里,有什么需要补充的请留言。
HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。...HTTP 请求/响应的步骤: 1、客户端连接到Web服务器 2、发送HTTP请求 3、服务器接受请求并返回HTTP响应 4、释放连接TCP连接 5、客户端浏览器解析HTML内容 HTTP请求 是指从客户端到服务器端的请求消息...POST请求可能会导致新的资源的建立和/或已有资源的修改。 PUT 从客户端向服务器传送的数据取代指定的文档的内容。 DELETE 请求服务器删除指定的页面。...Authorization:授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中。 Content-Length:表示请求消息正文的长度。 ...Server响应头包含处理请求的原始服务器的软件信息。此域能包含多个产品标识和注释,产品标识一般按照重要性排序。Servlet一般不设置这个值,而是由Web服务器自己设置。
http协议组成 请求头\r\n\r\n请求体 响应头\r\n\r\n响应体 关于请求头里的常用相关参数 浏览器支持的内容 Accept :告诉服务端 客户端接受什么类型的响应。...Referer :表示这个请求是从哪个URL过来的 Host:初始URL中的主机和端口 Cache-Control 对缓存进行控制 User-Agent:发起请求的来源 其他参数 If-Modified-Since...如果Servlet看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片...要实现这一点,Servlet需要在应答中发送一个Content-Length头,最简单的实现方法是:先把内容写入ByteArrayOutputStream,然后在正式写出内容之前计算它的大小; Content-Length...文件传输编码 Transfer-Encoding:chunked Vary 告诉下游代理是使用缓存响应还是从原始服务器请求 Vary: * Via 告知代理客户端响应是通过哪里发送的 Via: 1.0
Wookiees in HTTP中对前面报告中的攻击方式进行了丰富和扩充。...但是在RFC2616的第4.4节中,规定:如果收到同时存在Content-Length和Transfer-Encoding这两个请求头的请求包时,在处理的时候必须忽略Content-Length,这其实也就意味着请求包中同时包含这两个请求头并不算违规...这一请求头,而后端服务器会遵守RFC2616的规定,忽略掉Content-Length,处理Transfer-Encoding这一请求头。...的描述是 当Content-Length请求头不匹配时,响应400,删除具有相同Content-Length请求头的重复副本,如果存在Transfer-Encoding请求头,则删除Content-Length...这样一来,后来的请求的一部分被作为了走私的请求的参数的一部分,然后从响应中表示了出来,我们就能获取到了前端服务器重写的字段。 在走私的请求上添加这个字段,然后走私一个删除用户的请求就好了。
Wookiees in HTTP中对前面报告中的攻击方式进行了丰富和扩充。...但是在RFC2616的第4.4节中,规定:如果收到同时存在Content-Length和Transfer-Encoding这两个请求头的请求包时,在处理的时候必须忽略Content-Length,这其实也就意味着请求包中同时包含这两个请求头并不算违规...这一请求头,而后端服务器会遵守RFC2616的规定,忽略掉Content-Length,处理Transfer-Encoding这一请求头。...的描述是 当Content-Length请求头不匹配时,响应400,删除具有相同Content-Length请求头的重复副本,如果存在Transfer-Encoding请求头,则删除Content-Length...这样一来,后来的请求的一部分被作为了走私的请求的参数的一部分,然后从响应中表示了出来,我们就能获取到了前端服务器重写的字段。 在走私的请求上添加这个字段,然后走私一个删除用户的请求就好了。 ?
以一个http响应为例: HTTP/1.1 404 OK 响应行 Server: Apache-Coyote/1.1 响应头 Content-Length: 0 Date: Thu, 12...May 2016 06:20:53 GMT this is servlet 实体内容 响应行 HTTP/1.1 404 OK http协议版本 状态码 状态描述 其中状态码格外重要...HttpServletResponse对应设置方法: response.setStatus(); //设置状态码 响应头 Location: www.github.com ---表示重定向的地址...,该头和302的状态码一起使用。...close:关闭连接 keep-alive:保存连接 HttpServletResponse对应设置方法: response.setHeader("name","value") 设置响应头 实体内容
SpringBoot 系列 web 篇之自定义返回 Http Code 的 n 种姿势 虽然 http 的提供了一整套完整、定义明确的状态码,但实际的业务支持中,后端并不总会遵守这套规则,更多的是在返回结果中...在 Spring 中可以做呢?...➜ ~ curl 'http://127.0.0.1:8080/code/451' -i HTTP/1.1 451 Content-Type: text/plain;charset=UTF-8 Content-Length...code,会设置对响应头;如果是自定义的不被识别的 code,那么返回的 http code 是 500 4, 小结 上面介绍了几种常见的设置响应 http code 的姿势,下面小结一下使用时的注意事项...一灰灰 Blog 尽信书则不如,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现 bug 或者有更好的建议,欢迎批评指正,不吝感激 下面一灰灰的个人博客,记录所有学习和工作中的博文,
设置和获取HTTP标头 设置和获取HTTP标头 可以设置和获取HTTP标头的值。 %Net.HttpRequest的以下每个属性都包含具有相应名称的HTTP标头的值。...这些方法忽略Content-Type和其他实体标头。 ReturnHeaders() 返回包含此请求中的主HTTP标头的字符串。 OutputHeaders() 将主HTTP标头写入当前设备。...此方法有两个参数: 标头的名称(不区分大小写),不带冒号(:)分隔符;这是一个字符串,如Host或Date 标头值 不能使用此方法设置实体标头或只读标头(Content-Length和Connection...如果这样做,这些值将接收从1开始的下标。在其他方法中,可以使用这些下标来引用目标值。 DeleteParam() 从请求中删除参数。第一个参数是参数的名称。...如果这样做,值将接收从1开始的下标。在其他方法中,可以使用这些下标来引用目标值 DeleteFormData() 从请求中删除表单数据。第一个参数是表单项的名称。