HTTP Response 拆分
译者注:原文拆分对应的单词为splitting
HTTP头 拆分是一种偷窃用户数据的一种攻击方法。可以用来执行跨平台的脚本攻击、偷取用户数据、破坏或篡改网站内容。
HTTP Response 拆分有多严重?
当浏览器请求一个页面的时候,页面将HTTP头的信息发送给浏览器。这些头信息告诉浏览器应该用什么语言来显示,都要采取什么动作,以及网站是怎么编写。下面是一个Google的头信息样例:
http://www.google.com/
GET / HTTP/1.1
Host: www.google.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
在开发程序时,你可能很想自己更新或者设置http header。例如,最常见的就是设置PHP的referer 头。下面展示一个response拆分的简单例子,假设你用URL中的一个get参数设置了http header:
<?php
header("Location: ".$GET['redirect']);
?>
这个代码将为页面设置一个Location header。不怀好意的黑客可能认识这个并试图修改页面发送的header。注意,Google的页面头信息中每一条都是新起一行。攻击者就可以聪明的修改这个URL来修改HEADER.
www.mysite.com/page1.php?redirect="www.a badsite.com"
而这个还不是最糟糕的,识别header中的行分隔符,攻击者还可以将你的网站修改成:
www.mysite.com/page1.php?redirect=\r\nContent-type:text/html\r\n<html>new site!</html>
这样就能插入一个新的header或者其他HTML。这些HTML将会显示在网页的顶上。尽管上面的URL还不是一个完整的攻击(还需要更多的header信息),但是已经告诉我们攻击是如何发起的。
这会对网站安全造成什么影响?
header拆分和偷取用户数据的其他攻击一样危险。
诱导用户点击这些经过特殊伪造的链接并不困难,攻击者可以将这些链接发布在比较热门的消息版,隐藏在<img>标签内等其他方式。
因此,header拆分要和其他跨站脚本攻击一样重视。
防止Response拆分
和其他攻击一样,这也是基于用户传递的数据,或者用户修改的数据。一旦你在程序中设置了header,保证这个数据不能被用户修改,或者进行了完整的校验。可以通过检查输入是否修改,输入的长度来确保header信息的正确。
如同所有的数据检查,没有一个通用的解决方案来防止每一个可能的攻击,但是做一个白名单是一个很好的实践——删除掉与回车换行有关的字符(\r ,LF ,\n ,CR等).
最后,保证web服务器和脚本代码都是最新的。PHP 5.1.2增加了header拆分的预防机制。保持服务器的各个组件都及时更新可以防止大部分的攻击。
原文地址:
http://www.golemtechnologies.com/articles/http-response-splitting
分享到:
相关推荐
“Effective incident response forms the criteria used to judge cybersecurity programs. Effective protection and detection measures do not matter if the response to an event falls short. Within days of...
用 golang 写 http server 时,可以很方便可通过 w.Header.Set(k, v) 来设置 http response 中 header 的内容。但是需要特别注意的是:某些时候不仅要修改 response的header ,还要修改 response的StatusCode。修改...
HttpClient response nullprivate static void close(HttpMethod method) {method.rel
HTTP_Response消息Content-Type头部规范
http请求服务单返回头部可选参数、含义、以及相关示例
http中的contentType和responseType: contentType的主要类型和responseType的类型
request response
digest 用户认证 response生成算法.适用于大部分网络安全认证。
VUE 修复MOCKJS ResponseType BUG
aws-lambda-http-response 创建该项目是为了促进在Amazon Lambda中组装Api Gateway返回对象,以及自动触发响应。 如何使用 安装 Npm $ npm i aws-lambda-http-response --save 例子 进口 // import const ...
Jsp利用response.sendRedirect、cookie传参
Using a well-conceived incident response plan in the aftermath of an online security breach enables your team to identify attackers and learn how they operate. But, only when you approach incident ...
@Response和@Request注解的应用
很详细的http响应详解,非常不错的一个思维导图。。。
Response-Headers详解,WEB开发不可缺少的帮助文档
request和response实现跳转和重定向的区别
response设置编码 java 范围解释
如何RobotFramework得到response后取数
java response 下载文件方法。使用流下载文件。
aws security incident response aws security incident response