赞
踩
HTTP是一个基于请求与响应模式的、无状态的应用层协议。
常基于TCP的连接方式 ,即http是将数据打包成TCP数据包来进行传送的,绝大多数Web应用,都是构建在HTTP协议之上,即目前使用浏览器访问web网站都是以http协议为标准的。
客户机与服务器建立连接后,浏览器可以向web服务器发送请求并显示收到的网页,当用户在浏览器地址栏中输入一个URL或点击一个超连接时,浏览器就向服务器发出了HTTP请求,请求方式的格式为:统一资源标识符、协议版本号,后边是MIME(Multipurpose Internet Mail Extensions)信息包括请求修饰符、客户机信息和可能的内容。该请求被送往由URL指定的WEB服务器,WEB服务器接收到请求后,进行相应反映,其格式为:一个状态行包括信息的协议版本号、一个成功或错误的代码,后边服务器信息、实体信息和可能的内容。即以HTTP规定的格式送回所要求的文件或其他相关信息,再由用户计算机上的浏览器负责解释和显示。
GET :请求获取Request-URI所标识的资源
POST :在Request-URI所标识的资源后附 加新的数据
HEAD:请求获取由Request-URI所标识的资源的响应消息报头
PUT: 请求服务器存储一个资源,并用Request-URI作为其标识
DELETE:请求服务器删除Request-URI所标识的资源
TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT:保留将来使用
OPTIONS:请求查询服务器的性能或查询与资源相关的选项等
类别 | 原因短语 | |
---|---|---|
1XX | Informational(信息性状态码) | 接收的请求正在处理 |
2XX | Success(成功状态码) | 请求正常处理完毕 |
3XX | Redirection(重定向状态码) | 需要进行附加操作以完成请求 |
4XX | Client Error(客户端错误状态码) | 服务器无法处理请求 |
5XX | Server Error(服务端错误状态码) | 服务器处理请求出错 |
常见的HTTP状态码
200 OK 204 No Content 一般在只需要从客户端往服务器发送信息,而对客户端不需要发送新信息内容的情况下使用. 206 Partial Content 该状态码表示客户端进行了范围请求,而服务器成功执行了这部分的GET请求.响应报文中包含由Content-Range指定范围的实体内容. 301 Moved Permanently 永久性重定向.请求资源的URI已变更. 302 Found 临时性重定向. 303 SEE OTHER 该状态码表示由于请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源 304 Not Modified 该状态码表示客户端发送附带条件的请求时,服务器端允许请求访问资源,但为满足条件的情况. 307 Temporary Redirect 临时重定向,类似302 400 Bad Request 该状态码表示请求报文中存在语法错误 401 Unauthorized 需要认证/认证失败 403 Forbidden 未被授权 404 Not Found 500 Internal Server Error 503 Service Unavailable 该状态码表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求.
通信使用明文可能会被窃听
互联网上流动的数据可能被恶意窥视, 被抓包(Packet Capture)或嗅探器(Sniffer)工具收集到数据包并解析,eg: Wireshark, 可以获取HTTP协议的请求和响应的内容,并对其进行解析
通信的加密
HTTP协议中没有加密机制,可以通过和SSL或TLS的组合使用,加密HTTP的通信内容.
HTTPS -> HTTP + SSL ->HTTP Secure / HTTP over SSL
内容的加密
对报文主体进行机密处理,前提是要求客户端和服务端同时具备加密和解密机制.
不验证通信方的身份,因此有可能遭遇伪装
无法证明报文的完整性,所以有可能已遭篡改
接收到的内容可能有误
中间人攻击(Man-in-the-Middle attack,MITM): 请求或响应在传输途中,遭攻击者拦截并篡改内容的攻击.
如何防止篡改
常用的是 MD5和SHA-1等散列值校验的方法,以及用来确认文件的数字签名方法.
提供下载服务的网站,比如Apache相关的软件下载,会提供以PGP(Pretty Good Privacy,完美隐私)创建的签名及MD5算法生成的散列值.
HTTP首部注入攻击(HTTP Header Injection)是指攻击者通过在响应首部字段内插入换行,添加任何响应首部或主体的一种攻击.属于被动攻击模式。
向首部主体内添加内容的攻击称为HTTP响应截断攻击(HTTPResponse Splitting Attack)
如下所示,Web应用有时会把从外部接收到的数值,赋给响应首部字段Location和Set-Cookie
Location: http://www.example.com/a.cgi?q=12345
Set-Cookie: UID=12345
HTTP首部注入攻击有可能造成以下影响:
下面我们以选定某个类别后即可跳转至各类别对应页面的功能为例,讲解HTTP首部注入攻击。该功能为每个类别都设定了一个类别ID值,一旦选定某类别,就会将该ID值反映在响应内的Location首部字段内,形如
Location: http://example.com/?cat=101
令浏览器发生重定向跳转
攻击者以下面的内容替代之前的类别ID后发送请求
101%0D%0ASet-Cookie:+SID=123456789
其中,%0D%0A
代表HTTP报文中的换行符,紧接着的是可强制将攻击者网站的会话ID设置成SID=123456789
的Set-Cookie首部字段。
发送该请求之后,假设结果返回以下响应
Location:http://example.com/?cat=101(%0D%0A:换行符)
Set-Cookie:SID=123456789
此刻,首部字段Set-Cookie已生效,因此攻击者可指定修改任意的Cookie信息。通过和会话固定攻击(攻击者可使用指定的会话ID)攻击组合,攻击者可伪装成用户
攻击者输入的%0D%0A,原本应该属于首部字段Location的查询值部分,但经过解析后,%0D%0A变成了换行符,结果插入了新的首部字段
这样一来,攻击者可在响应中插入任意的首部字段
该功能就是向URL指定参数后,使本来的URL发生重定向跳转
http://example.com/?redirect=http://www.tricorder.jp
攻击者把重定向指定的参数改写成已设好陷阱的Web网站对应的连接,如下所示
http://example.com/?redirect=http://hackr.jp
用户看到URL后原以为访问example.com,不料实际上被诱导至hackr.jp这个指定的重定向目标
可信度高的Web网站如果开放重定向功能,则很有可能被攻击者选中并用来作为钓鱼攻击的跳板
HTTP响应截断攻击是用在HTTP首部注入的一种攻击。攻击顺序相同,但是要将两个%0D%0A%0D%0A并排插入字符串后发送。利用这两个连续的换行就可作出HTTP首部与主体分隔所需的空行了,这样就能显示伪造的主体,达到攻击目的。这样的攻击叫做HTTP响应截断攻击
%0D%0A%0D%0A<HTML><HEAD><TITLE>之后,想要显示的网页内容<!--
在可能进行HTTP首部注入的环节,通过发送上面的字符串,返回结果得到以下这种响应
Set-Cookie: UID=(%0D%0A :换行符)
(%0D%0A :换行符)
<HTML><HEAD><TITLE>之后,想要显示的网页内容(原来页面对应的首部字段和主体部分全视为注释)
利用这个攻击,已触发陷阱的用户浏览器会显示伪造的Web页面,再让用户输入自己的个人信息等,可达到和跨站脚本攻击相同的效果
另外,滥用HTTP/1.1中汇集多响应返回功能,会导致缓存服务器对任意内容进行缓存操作。这种攻击称为缓存污染。使用该缓存服务器的用户,在浏览遭受攻击的网站时,会不断地浏览被替换掉的Web网页
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。