Web安全深度剖析之HTTP

HTTP协议解析

发起HTTP请求
在浏览器地址栏中输入一个URL,并按回车键即可发送HTTP请求
1、URL
<1>URL定义:URL被称为网页地址,是互联网标准的地址。
<2>URL的标准格式为:协议://服务器IP[:端口]/路径/[?查询]
例如,http://www.xxser.com/post/httpxieyi.html就是一个标准的URL。
2、那么当我们输入URL之后,按下回车,回显到页面上的这个过程是怎样的呢?
<1>浏览器根据请求的URL交给DNS域名解析器,找到真实IP,向服务器发起请求;
<2>三次握手建立连接,服务器交给后台处理完成后返回数据,浏览器接收文件(HTML,JS,CSS,图像等),数据传入完成后四次挥手断开连接。
<3>浏览器对加载到的资源(HTML,JS,CSS等)进行语法解析,建立相应的内部数据结构。
<4>载入解析到的资源文件,渲染页面,完成

HTTP协议详解

一、HTTP请求与响应
(1)HTTP请求
1、出现的原因:http是个无状态的协议,所以,需要在请求头和响应头中包括自身的一些信息和想要执行的动作,这样,对方在收到信息后,就可以知道你是谁,你想干什么。
2、http的请求报文由三部分组成:请求行、请求头、请求体
(1)请求行
<1>定义:默认1.1长连接, 1.0的以及被淘汰了
<2>格式:请求方式 请求资源 协议版本
<3>举例:POST /myday33/login.html HTTP/1.1,POST为请求方式,myday33/login.html为请求资源(也就是url),HTTP/1.1为协议版本
(2)请求头
<1>定义:客户端发给服务端的一些附加信息
<2>格式:key:value
请求头描述了客户端向服务器发送请求时使用的http协议类型,所使用的编码,以及发送内容的长度,refer,等等。refer是干嘛的,一般用来做简单的防跨站攻击。HOST代表请求的主机地址,User-Agent代表浏览器的标识。请求头由客户端自行设定
(3)请求体
<1>并不是任何时候都有数据的,只有在post提交并且有参数的时候,请求体才有数据,其他情况没有.
<2>格式: name=value&name=value…
在这里插入图片描述
3、HTTP响应
与HTTP请求对应的是HTTP响应,HTTP响应也由三部分组成,分别是响应行、响应头和响应正文。

在这里插入图片描述
HTTP响应的第一行为响应行,其中有HTTP版本(HTTP/1.1)、状态码(200)以及消息“OK”。
第二行至末尾的空白为响应头,由服务器向客户端发送。
消息报头之后是响应正文,是服务器向客户端发送的HTML数据。
4、HTTP请求方式
http主要有两种请求方式:GET方法与POST方法
<1>GET方法
(1)GET交互方式是从服务器上获取数据,而并非修改数据,所以GET交互方式是安全的。就像数据库查询一样,从数据库查询数据,并不会影响数据库的数据信息,对数据库来说,也就是安全的。
(2)GET交互方式是幂等的,幂等是一个数学概念,幂等函数就是可以使用相同参数重复执行,并且能获得相同结果的函数。在GET交互这里就是,对同一个URL的多个请求,得到的结果是相同的。就像数据库查询,不同的数据库连接对同一个数据库表用相同条件查询时,得到的结果也是一样的
<2>POST方法
(1)POST交互是可以修改服务器数据的一种方式,涉及到信息的修改,就会有安全问题。就像数据库的更新,Update一个数据库表时,如果条件没有写对,就可能把不需要修改的数据给修改了,得到的数据就是错误的了。
(2)一般的POST交互是必须要用到表单的,但是表单提交的默认方法是GET,如果改为POST方式,就需要修改表单提交时的Method
5、HTTP状态码
当客户端发出HTTP请求,服务器接收后,会向客户端发送响应信息,其中,HTTP响应中的第一行,最重要的一点就是HTTP的状态码,内容如下:
HTTP/1.1 200 OK
此的状态码为200,在HTTP协议中表示请求成功。HTTP状态码由三位数字组成。第一位定义了响应的类别,且只有以下5种。
1xx:信息提示,表示请求已被成功接收,急需处理。其范围为100~101;
2xx:成功,服务器成功的处理了请求。其范围为200~206;
3xx:重定向,重定向状态码用于告诉浏览器客户端,他们访问的资源已被移动,并告诉客户端新的资源地址位置,然后浏览器将重新对新资源发起请求。其范围为300~305;
4xx:客户端错误状态码,有时客户端会发送一些服务器无法处理的东西,比如格式错误的请求,或者是请求一个不存在的URL。其范围为400~415;
5xx:web服务器自身出错,可能是web服务器运行出错,或者网站挂了。用来描述服务器内部错误。其范围为500~505;
以下是常见的状态码

200:客户端请求成功
302 :重定向
404:请求资源不存在,是最常见的状态
400:客户端请求有语法错误,不能被服务器所理解
401:请求未经授权
403:服务器收到请求,但是拒绝提供服务
500:服务器内部错误,是最常见的状态
503:服务器当前不能处理客户端请求,一段时间后可恢复正常

6、HTTP消息
HTTP消息又称HTTP头,由四部分组成,分别是请求头、响应头、普通头和实体头。
(1)请求头
请求头只存在于HTTP请求中,请求报头允许客户端服务器传递请求的附加信息和客户端自身的信息。常用的HTTP请求头如下
<1>Host
Host请求报头域主要用于指定被请求资源的Internet主机和端口号,例如HOST:www.xxser.com:801.
<2>User-Agent
User-Agent请求报头域允许客户端将它的操作系统、浏览器和其他属性告诉服务器。登录一些网站时,很多时候都可以
<3>Referer
Referer:当前访问URL的上一个URL;也就是从哪儿来的
<4>Cookie
Cookie是非常重要的请求头,它是一段文本,表示请求者身份
<5>Range
Range:请求实体的部分内容,多线程下载必用到此请求头
<6>x-forword-for
x-forword-for:XXF头,代表请求端的IP;可多个,中间逗号隔开
<7>Accept
Accept:指定客户端接收哪些MIME类型的信息
<8>Accept-Charset
Accept-Charset:指定客户端接收的字符集
以上这些可以通过火狐中的Hackbar进行伪造
(2)响应头
响应头是服务器根据请求向客户端发送的HTTP头。常见的HTTP响应头如下
<1>Server:服务器所使用的web服务器名称
<2>Set-Cookie:向客户端设置Cookie,查看此头可以看到服务器向客户端发送的Cookie信息。
<3>Last-Modified:服务器通过这个告诉浏览器,资源的最后修改时间
<4>Location:告诉浏览器要去访问的页面,浏览器接收后会立即访问此头指向的页面。通常配合302状态码使用
<5>Refresh:服务器通过Refresh告诉浏览器定时刷新
(3)实体头
实体头定义了关于实体正文和请求所标识的资源的元信息(元信息即实体内容的属性,包括实体信息类型、长度、压缩方法、最后一次修改时间)。请求和响应消息都会传送一个实体头。
<1>Content-Type:向接收方指示实体的介质类型
<2>Content-Encoding:指示了已经被应用到实体正文的附加内容的编码。被用作媒体类型的修饰符,但获取它必须使用相应的解码机制
<3>Content-Length:指明实体正文的长度,以字节方式存储的十进制数字来表示
<4>Last-Modified:用于指示资源的最后修改日期和时间
7、HTTP协议与HTTPS协议的区别
详细可见HTTP协议与HTTPS协议的区别

黑帽SEO之搜索引擎劫持

一、定义:SEO即搜索引擎优化。简单来说,就是让网页排名更高
二、手段
1、利用友情链接
黑帽SEO对网站进行入侵,然后偷偷挂上友情链接(黑链),从而获得更高的排名。
那什么是黑链呢?黑链也称为暗链 ,即隐蔽链接 hidden links,是黑帽SEO的作弊手法之一。在早期的SEO优化中,黑链是最有效最迅速的方法之一;但是现在百度算法已经对iframe和display:none 等直接进行了打击,如果你对代码没有任何处理的话,那么你所做的外链将全部降权。详细内容:黑帽SEO之暗链。
2、搜索引擎劫持
利用Referer以及User-agent,黑帽SEO利用这两个头来欺骗搜索引擎。Referer头用于告诉Web服务器,用户是从哪个页面找过来的,User-agent主要是告诉浏览器和操作系统信息。一般步骤如下

  • 建立劫持搜索引擎库,如以Baidu、Google等域名为关键字
  • 获取HTTP Referer头
  • 遍历搜索引擎库,并与Referer的内容相比较,如果两者相同或者存在搜索引擎关键字,那么页面将会发生跳转,也就是域名劫持

猜你喜欢

转载自blog.csdn.net/weixin_53549425/article/details/119561234