渗透与测试 1 http协议

1、渗透与测试的含义及存在的必要性:渗透与测试是为了使网络防御机制正常工作而提供的一种机制。假设一个公司经常为增加公司网络的安全给公司的网络安全防御系统打补丁,但公司毕竟不是专业的安全公司,因此总会有些批露,这个时候就可以请网络安全的专业人士进行渗透与测试工作找出公司网络里潜在的漏洞,以增加公司网络的安全性 。   

2、C\S架构:client:客户端,我们每天使用的计算机就是客户端   serve:服务器、提供服务的,在远处的计算机。服务器与客户端建立连接的过程被称为通信,中间要使用很多设备。整个结构被称为技术架构。

渗透与测试 1 http协议_第1张图片
服务器与客户端的关系

3、B/S架构:利用浏览器访问服务器端的操作。理论上来说它属于C/S架构的一种,但是随着技术的进步,它被分了出来。

4、http协议:超文本传输协议。是一个客户端和服务器端请求和应答的标准(TCP),并且它只假定(其下层协议提供)可靠的传输,任何能够提供这种保证的协议都可以被其使用。

a、访问网站时,客户端与服务器的“四次握手”。

渗透与测试 1 http协议_第2张图片
客户端访问网站时的交互过程


b、含义及作用:它是服务器向本地传输超文本文件的协议,它不仅能提高传输效率和准确性,还能决定传输部分的先后次序。

c、数据包里面的信息

    GET/HTTP/1.1      GET请求+路径+协议版本号

    HOST:bugbank.cn      访问网站的域名

    User-Agent:Mozilla/5.0(Windows  NT  10.0;WOW64;rv:51.0客户端浏览器的特征及版本信息

    Accept:text/html,application/xhtml+xml,application/xml;q=0.9...客户端允许接受的类型

    Accept-Lanuage:zh-CN, zh;q=0.8,en-US;q=0.5,en;q=0.3  接受的语言

    Accept-Encooding:gzip,deflate   接受的编码类型

    Cookie:code=bd60dd1ee8009d95677fdb5d5c5b0fbc;在客户端第一次访问网站的时候给客户端的唯一标注,就相当于每个人的身份证

    Connection:keep-alive  客户端与服务器的连接   有时候为了保持网站的通畅会设定多长时间没有请求就断掉连接

d、6种请求方法

            GET请求:GET的本质是 得.

                              从服务器获取数据,效率比POST高.

                              GET请求能够被缓存

                             在 HTTP 协议定义中,没有对GET请求的数据大小限制,不过因为浏览器不同一般限制在2~8K之间.

                             GET发送请求时,URL中除了资源路径以外,所有的参数(查询字符串)也包装在URL中,并且服务器的访问日志会记录,不要传递敏感信息.

                参数格式:

                        在资源路径末尾添加?表示追加参数.

                        每一个变量及值按照变量名=变量值 方式设定,不能包含空格或者中文.

                        多个参数使用&连接.

                注意 : URL 字符串中如果包含空格或者中文,需要添加百分号转义.

        浏览器可以监视GET请求.


渗透与测试 1 http协议_第3张图片

            POST请求:

                    POST的本质是给.

                    向服务器发送数据,也可以获得服务器处理之后的结果,效率不如GET.

                   POST请求不能被缓存.

                    POST提交数据比较大,大小靠服务器的设定值限制,PHP通常限定 2M.

                    POST发送请求时,URL中只有资源路径,但不包含参数,服务器日志不会记录参数,相对更安全.

                    参数被包装成二进制的数据体,格式与 GET 基本一致,只是不包含 ?.

            注意 : 所有涉及到用户隐私的数据(密码,银行卡号)一定记住使用POST方式传递.

            浏览器可以监视POST请求.但是不容易捕捉到.


渗透与测试 1 http协议_第4张图片

            PUT请求:这个方法比较少见,HTML表单也不支持这个。本质上来讲, PUT和POST极为相似,都是向                                   服务器发送数据,但它们之间有一个重要区别,PUT通常指定了资源的存放位置,而POST则                                 没有,POST的数据存放位置由服务器自己决定。

                                 举个例子:如一个用于提交博文的URL,/addBlog。如果用PUT,则提交的URL会是像这样                                                       的”/addBlog/abc123”,其中abc123就是这个博文的地址。而如果用POST,则这                                                    个地址会在提交后由服务器告知客户端。目前大部分博客都是这样的。显然,PUT                                                     和POST用途是不一样的。具体用哪个还取决于当前的业务场景。

            COPY请求:请求服务器将指定的页面拷贝至另一个网络地址。

            DELETE请求:删除某一个资源。基本上这个也很少见,不过还是有一些地方比如amazon的S3云服务里                                       面就用的这个方法来删除资源。

            OPTIONS请求:它用于获取当前URL所支持的方法,但是极少使用。若请求成功,则它会在HTTP头中包                                         含一个名为“Allow”的头,值是所支持的方法,如“GET, POST”。

            HEAD请求:和GET本质是一样的,区别在于HEAD不含有呈现数据,而仅仅是HTTP头信息。有的人可能                                   觉得这个方法没什么用,其实不是这样的。想象一个业务情景:欲判断某个资源是否存在,                                   我们通常使用GET,但这里用HEAD则意义更加明确。

e、状态码:

    功能:可以简单的判断服务器端的情况。

    常见的状态码和含义:

            200:服务器端处理没问题你接收的也没问题。

            302:服务器端发给客户端的强制跳转

            500:服务器端错误

            404:页面未找到

            403:禁止访问或者禁止列出些目录。

你可能感兴趣的:(渗透与测试 1 http协议)