Security ❀ HTTP请求头部的内容

HTTP请求头部的内容

HTTP请求由三部分组成,分别是请求行、消息报头、请求正文;

(1)请求行
请求行以一个方法符号开头,以空格分开,后面跟着请求的URL和协议的版本;
标准的请求行格式:

Method Request-URL HTTP-Version CRLF
  • Method表示请示方法;
  • Request-URL是一个统一资源标识符;
  • HTTP-Version:请求的HTTP协议版本;
  • CRLF:表示回车和换行(除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)

HTTP协议定义了多种请求方法:

  • GET:请求获取Request-URL所标识的资源;
  • POST:在Request-URL所标识的资源后附加新的数据;
  • HEAD:请求获取由Request-URL所标识的资源的响应消息报头;
  • PUT:请求服务器存储一个资源,并用Request-URL作为其标识;
  • DELETE:请求服务器删除Request-URL所标识的资源;
  • TRACE:请求服务器回送收到的请求信息,主要用户测试或诊断;
  • CONNECT:保留;
  • OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求;

在实际应用中,考虑到安全因素,主要使用GET和POST两种方式开展请求,GET和POST请求的主要区别为:
GET方法:通过在浏览器的地址栏中输入网址访问网页时,浏览器采用GET方法向服务器获取资源,
对应的请求行示例为:

GET /form.html HTTP/1.1

POST方法:要求被请求服务器接收附在请求后面的数据,常用于提交表单,对应的请求行示例为:POST /nep/v1/ HTTP/1.1
GET和POST方法的最大区别就是提交参数在HTTP请求包的位置不同,使用GET方式时Request body部分为空白,POST方式则可利用URL及Request body发送请求,但是在实际应用中,两者的安全性一致,都可能因链路劫持而出现参数泄露的情况;
目前,有一些系统依然支持HEAD方法,HEAD方法与GET方法在使用方面几乎一致,利用HEAD方法的好处在于不必传输整个资源内容,就可以得到Request-URL所标识的资源信息,该方法常用于 测试链接的有效性;

(2)请求消息报头
请求消息报头用来向服务器端传递客户端自身的信息以及用户的附加信息,这些信息可以帮助服务器更好地识别用户的请求,以提供对应的响应内容,报头中涉及安全的内容字段如下:

  • Host:主要用于指定被请求资源的internet主机和端口号,即标识请求目标,其来源为当前访问的URL,默认端口号为80,若指定了端口号进行防卫,则变为:www.a.com:8000
  • Content-Length:标识当前请求包中的内容长度;
  • Origin:标识本次请求的发起源,只适用于POST方式;
  • Referer:标识当前请求的发起页面;
  • Accept:指定客户端接收哪些类型的信息;
  • Accept-Encoding:告知服务器端当前客户端可接受的内容编码;
  • Accept-Language:告知服务器端当前支持的语音类型;
  • User-Agent:包含当前用户的操作系统、浏览器的基本信息,用于告知服务器当前访问者的情况;

(3)请求正文内容
请求正文中包含HTTP传输的信息,当请求方法为GET时,请求正文为空白,所有内容通过在URL后面添加参数进行传输,只有请求方法为POST时,HTTP请求正文中才有信息,通常为Web系统自动以的参数,用于实现与服务器的交互,其中的参数是由Web系统自定义定义的,在Web系统开发时一般会根据参数用途指定特定的名称,如username、code等;但是这样也会让攻击者清楚地知道参数的具体用法,推荐此部分中,参数命名应模糊,使得参数名称无法通过表面意思被理解,从而增加攻击者的分析难度;

猜你喜欢

转载自blog.csdn.net/qq_42197548/article/details/106108829