网络安全HTTP基础知识
2021-11-06 23:26:09 0 举报
AI智能生成
无
作者其他创作
大纲/内容
简介
HTTP(HyperText Transfer Protocol,超文本传输协议)诞生于1989年3月,是访问万维网使用的核心通信协议,也是今天所有Web应用程序使用的通信协议。
工作原理
HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求
Web服务器有:Apache服务器,IIS服务器(Internet Information Services)等。
Web服务器根据接收到的请求后,向客户端发送响应信息。
HTTP默认端口号为80,但是你也可以改为8080或者其他端口。
Web服务器根据接收到的请求后,向客户端发送响应信息。
HTTP默认端口号为80,但是你也可以改为8080或者其他端口。
特点
HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。
采用这种方式可以节省传输时间
采用这种方式可以节省传输时间
HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。
客户端以及服务器指定使用适合的MIME-type内容类型。
客户端以及服务器指定使用适合的MIME-type内容类型。
HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。
缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。
另一方面,在服务器不需要先前信息时它的应答就较快。
缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。
另一方面,在服务器不需要先前信息时它的应答就较快。
协议报文
请求报文
请求行
HTTP 1.0
GET 最常用的方法为GET,它的主要作用是从Web服务器获取一个资源。GET请求并没有消息主体,因此在消息头后的空白行中没有其他数据。
POST 方法的主要作用是执行操作。使用这个方法可以在URL查询字符申与消息主体中发送请求参数。尽管仍然可以将URL标注为书签,但书签中并不包含消息主体发送的任何参数
HEAD 这个方法的功能与GET方法相似,不同之处在于服务器不会在其响应中返回消息主体。服务器返回的消息头应与对应GET请求返回的消息头相同。因此,这种方法可用于检查某一资源在向其提交GET请求前是否存在。
HTTP1.1新增
OPTIONS 服务器通常返回一个包含Allow消息头的响应,并在其中列出所有有效的http方法。
PUT 这个方法试图使用包含在请求主体中的内容,向服务器上传指定的资源。如果激活这个方法,渗透测试员就可以利用它来攻击应用程序。例如,通过上传任意一段脚本并在服务器上执行该脚本来攻击应用程序。
DELETE 用于删除文件,是与PUT 相反的方法,按照请求URI 删除指定资源。
TRACE 追踪路径,这种方法主要用于诊断。服务器应在响应主体中返回其收到的请求消息的具体内容。这种方法可用于检测客户端与服务器之间是否存在任何操纵请求的代理服务器。
CONNECT 要求在与代理服务器建立通讯时建立隧道,实现用隧道协议进行TCP通信。主要是使用SSL和TLS协议把通信内容进行加密后经网络隧道传输。
MOVE: 请求服务器将指定的页面移至另一个网络地址。
COPY: 请求服务器将指定的页面拷贝至另一个网络地址。
WRAPPED: 允许客户端发送经过封装的请求。
Extension-mothed:在不改动协议的前提下,可增加另外的方法。
请求头
User-Agent:消息头提供与浏览器或其他生成请求的客户端软件有关的信息。
Accept:客户端可识别的内容类型列表,表示浏览器支持的 MIME协议 类型。text/html、application/xhtml+xml、application/xml 和 */*,优先顺序是它们从左到右的排列顺序
Host:消息头用于指定出现在被访问的完整URL中的主机名称
Accept-Encoding。这个消息头用于告诉服务器.客户端愿意接受哪些内容编码。
Authorization。这个消息头用于为一种内置HTTP身份验证向服务器提交证书。
Cookie 是大多数Web应用程序所依赖的HTTP协议的一个关键组成部分,攻击者常常通过它来
利用Web应用程序中的漏洞。服务器使用cookie机制向客户端发送数据,客户端保存cookie并将其返回给服务器。与其他类型的请求参数(存在于URL查询字符串或消息主体中)不同,无须应用程序或用户采取任何特殊措施.随后的每一个请求都会继续重新向服务器提交cookie
利用Web应用程序中的漏洞。服务器使用cookie机制向客户端发送数据,客户端保存cookie并将其返回给服务器。与其他类型的请求参数(存在于URL查询字符串或消息主体中)不同,无须应用程序或用户采取任何特殊措施.随后的每一个请求都会继续重新向服务器提交cookie
expires。用于设定cookie的有效时间。这样会使浏览器将cookie保存在永久性的存储器中,在随后的浏览器会话中重复利用.直到到期时间为止。如果没有设定这个属性,那么cookie仅用在当前浏览器会话中。
domain。用于指定cookie的有效域。这个域必须和收到cookie的域相同,或者是它的父域
path 用于指定cookie的有效URL路径。
secure 如果设置这个属性.则仅在HTTPS请求中提交cookie.
Httponly 避免跨域脚本(XSS)攻击如果设置这个属性,将无法通过客户端JavaScript直接访问cookie.
If-Modified-Since。这个消息头用于说明浏览器最后一次收到所请求的资源的时间。如果自那以后资源没有发生变化,服务器就会发出一个带状态码304的响应,指示客户端使用资源的缓存副本
If-None-Match。这个消息头用于指定一个实体标签。实体标签是一个说明消息主体内容的标识符。当最后一次收到所请求的资源时.浏览器提交服务器发布的实体标签。服务器可以使用实体标签确定浏览器是否使用资源的缓存副本。
Origin 这个消息头用在跨域Ajax求中,用于指示提出请求的域。
Referer 这个消息头用于指示提出当前请求的原始URL。
X_FORWARDED_FOR 是一个HTTP 扩展头,是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段
请求体
响应报文
响应行
响应头
Access-Control-Allow-Origin 用于指示可否通过跨域Ajax请求获取资源。
Cache-Control 用于向浏览器传送缓存指令(如no-cache)。
ETag 用于指定一个实体标签。客户端可在将来的请求中提交这个标识符。获得和If-None-Match消息头中相同的资源,通知服务器浏览器当前缓存中保存的是哪个版本的资源。
Expires 用于向浏览器说明消息主体内容的有效时间。在这个时间之前,浏览器可以使用这个资源的缓存副本。
Location 用于在重定向响应(那些状态码以3开头的响应)中说明重定向的目标。
Pragma。这个消息头用于向浏览器传送缓存指令(如no-cache).
Server 所使用的Web服务器软件中间件的相关信息。
Set-Cookie 向浏览器发布cookie.浏览器会在随后的请求中将其返回给服务器。
WWW-Authenticate 用在带401状态码的响应中,提供与服务器所支持的身份验证类型有关的信息。
Content-Length 显示规定消息主体的字节长度
Content-Type Web 服务器类型
X-Powered-By 用于告知网站是用何种语言或框架编写的
X-Frame-Options 用于指示浏览器框架是否及如何加载当前响应。
Vary:Accept-Encoding”标头,表示网站一般启用了GZip压缩
响应体
URL
URL(Uniform Resource Locator,统一资源定位符)是标识Web资源的唯一标识符.通过它
即可获取其标识的资源。最常见的URL格式如:https://www.baidu.com/
即可获取其标识的资源。最常见的URL格式如:https://www.baidu.com/
常见响应状态码
1xx-Informational (信息性状态码) 表示:接收到的请求正在处理。
2xx-Success (成功状态码) 表示:请求正常处理完毕。
200 OK 已成功提交请求,且响应主体中包含请求结果
201 Created 该请求已成功,并因此创建了一个新的资源。通常源于POST或某些PUT请求
202 Accepted 该请求已被接受进行处理,但是处理尚未完成。最终有可能会被处理也可能不会
204 No Content 请求处理成功 但是没有可返回的资源
206 Partial Content 客户端进行了范围请求 服务器成功的执行了这部分的GET请求。
3xx-Redirection (重定向状态码) 表示:需要进行附加操作已完成请求。
301 Moved Permanently。本状态码将浏览器永久重定向到另外一个在Location消息头中指定的URL。以后客户端应使用新URL替换原始URL。
302 Found。本状态码将浏览器暂时重定向到另外一个在Location消息头中指定的URL.客户端应在随后的请求中恢复使用原始URL.
303 See Other 请求对应的资源存在着另一个URI ,应使用GET 方法定向获取请求的资源。
304 Not Modified。表示客户端发送附带条件的请求时,服务器端允许请求资源,但是发生了请求条件未满足条件的情况。(再服务端资源未改变时,可访问未过期缓存。)该状态码和重定向没有任何关系(告诉客户端,你请求的这个资源至你上次取得后,并没有更改,你直接用你本地的缓存吧,我很忙哦,你能不能少来烦我啊)
4xx -Client Error (客户端错误状态码)表示:服务器无法处理请求。
400 Bad Request。客户端提交了一个无效的HTTP请求。当以某种无效的方式修改请求时(例如在URL中插人一个空格符),可能会遇到这个状态码。
401 Unauthorized. 权限错误,服务器在许可请求前要求HTTP进行身份验证。WWW-Authenticate消息头详细说明所支持的身份验证类型。
403 Forbidden 不管是否通过身份验证,禁止任何人访问被请求的资源。
404 Not Found 所请求的资源并不存在。
405 Method Not Allowed。本状态码表示指定的URL不支持请求中使用的方法。例如,如果试图在不支持PUT方法的地方使用该方法,就会收到本状态码。
413 Request Entity Too Large。如果在本地代码中探查缓冲器滋出瀚洞并就此提交超长数据串.则本状态码表示请求主体过长,服务器无法处理。
414 Request URI Too Long。与前一个响应类似,本状态码表示请求中的URL过长,服务器无法处理。
5xx-Server Error (服务器错误状态码) 表示: 服务器处理请求出错
500 Internal Server Error。服务器在执行请求时遇到错误,也可能是WEB 应用存在BUG 或某些临时错误。当提交无法预料的输人、在应用程序处理过程中造成无法处理的错误时,通常会收到本状态码。应该仔细检查服务器响应的所有内容,了解与错误性质有关的详情。
503 Service Unavailable。通常,本状态码表示尽管Web服务器运转正常.并且能够响应请求,但服务器访问的应用程序还是无法作出响应。应该进行核实,是否因为执行了某种行为而造成这个结果。
格式
常见的媒体格式
text/html : HTML格式
text/plain :纯文本格式
text/xml : XML格式
image/gif :gif图片格式
image/jpeg :jpg图片格式
image/png:png图片格式
text/plain :纯文本格式
text/xml : XML格式
image/gif :gif图片格式
image/jpeg :jpg图片格式
image/png:png图片格式
以application开头
application/xhtml+xml :XHTML格式
application/xml: XML数据格式
application/atom+xml :Atom XML聚合格式
application/json: JSON数据格式
application/pdf:pdf格式
application/msword : Word文档格式
application/octet-stream : 二进制流数据(如常见的文件下载)
application/x-www-form-urlencoded : <form encType=””>中默认的encType,form表单数据被编码为
key/value格式发送到服务器(表单默认的提交数据的格式)
application/xml: XML数据格式
application/atom+xml :Atom XML聚合格式
application/json: JSON数据格式
application/pdf:pdf格式
application/msword : Word文档格式
application/octet-stream : 二进制流数据(如常见的文件下载)
application/x-www-form-urlencoded : <form encType=””>中默认的encType,form表单数据被编码为
key/value格式发送到服务器(表单默认的提交数据的格式)
0 条评论
下一页