学习笔记(第三天)

2021/7/18 23:09:24

本文主要是介绍学习笔记(第三天),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

第三天

一.web漏洞

WEB漏洞通常是指网站程序上的漏洞。

1.漏洞形成

可能是由于代码编写者在编写代码时考虑不周全等原因而造成的漏洞。

2.漏洞攻击方法

2.1SQL注入

SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

2.2.跨站脚本攻击

跨站脚本攻击(也称为XSS)指利用网站漏洞从用户那里恶意盗取信息。

2.3缓冲区溢出

缓冲区溢出是一种非常普遍、非常危险的漏洞,在各种操作系统、应用软件中广泛存在。利用缓冲区溢出攻击,可以导致程序运行失败、系统宕机、重新启动等后果。更为严重的是,可以利用它执行非授权指令,甚至可以取得系统特权,进而进行各种非法操作。
缓冲区溢出(buffer overflow),是针对程序设计缺陷,向程序输入缓冲区写入使之溢出的内容(通常是超过缓冲区能保存的最大数据量的数据),从而破坏程序运行、趁著中断之际并获取程序乃至系统的控制权。

2.4cookies篡改

在网络上,cookie篡改(cookie poisoning)是攻击者修改cookie(网站用户计算机中的个人信息)获得用户未授权信息,进而盗用身份的过程,攻击者可能使用此信息打开新账号或者获取用户已存在账号的访问权限。
Cookie是存储在你计算机硬盘上的一小块信息,它允许你访问的网站鉴别你的身份,加速你的事务处理,监控你的行为和为你个性化显示。然而,cookie也允许未授权的人存取,在缺少安全措施的情况下,攻击者能够检查一个cookie并得到它的用途,编辑它以帮助他们从发送cookie的网站上获得用户的信息。

2.5跨站请求伪造

跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。

2.6CRLF注入攻击

CRLF的含义是“carriage return/line feed”,意思就是回车。这是两个ASCII字符,分别排在第十三和第十位。CR和LF是在计算机终端还是电传打印机的时候遗留下来的东西。电传打字机就像普通打字机一样工作。攻击者在搜索安全漏洞的时候没有忽略很少使用的CRLF。攻击者可以通过在一段数据中加入CRLF命令来改变接受这个数据的应用程序处理这个数据的方式,从而执行CFRL注入攻击。

3.漏洞危害

如果网站存在WEB漏洞并被黑客攻击者利用,攻击者可以轻易控制整个网站,并可进一步提权获取网站服务器权限,控制整个服务器。

二.HTTP协议数据包

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。
HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

1.HTTP特点

1.HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
2.HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
3.HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

2.工作原理

HTTP是基于客户/服务器模式,且面向连接的。
典型的HTTP事务处理有如下的过程:
(1)客户与服务器建立连接;
(2)客户向服务器提出请求;
(3)服务器接受请求,并根据请求返回相应的文件作为应答;
(4)客户与服务器关闭连接。

HTTP默认端口号为80。
HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。
一旦建立连接后,数据消息就通过类似Internet邮件所使用的格式[RFC5322]和多用途Internet邮件扩展(MIME)[RFC2045]来传送。

3.客户端请求消息

客户端发送一个HTTP请求到服务器的请求消息包括:请求行(request line)、请求头部(header)、空行和请求数据。

请求报文的一般格式如下:
请求报文的一般格式

3.1请求行

请求行又包含3个部分:请求方法、URL和协议版本。它们之间用空格分开,请求行最后通过一个回车符和一个换行符结尾。回车符是"\r",换行符是"\n"。

请求方法如下:

OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送’*'的请求来测试服务器的功能性。
HEAD:向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。
GET:向特定的资源发出请求。
POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的创建和/或已有资源的修改。
PUT:向指定资源位置上传其最新内容。
DELETE:请求服务器删除 Request-URI 所标识的资源。
TRACE:回显服务器收到的请求,主要用于测试或诊断。
CONNECT:HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。

我们在实际应用中常用的也就是 getpost,其他请求方式也都可以通过这两种方式间接的来实现。

URL(uniform resource locator),统一资源定位器,是因特网的万维网服务程序上用于指定信息位置的表示方法

协议版本字段说明该请求报文属于哪一版的http协议。

3.2请求头部

请求头部包含许多有关的客户端环境和请求正文的有用信息。

3.3空行

用一个回车符和一个换行符隔开请求头部和请求数据。

3.4请求数据

要发送的数据。

4. 服务器响应消息

HTTP响应由四个部分组成,分别是:状态行、消息报头、空行和响应正文。

4.1状态行

响应行以 HTTP 协议版本、表示响应状态的状态码和形容这个状态的一个短语组成,每个部分使用空格分隔,如下所示:
HTTP/1.1 200 OK

HTTP 响应的状态码是一个三位的整数,其中状态码的第一位用来表示响应的类别

状态码一共有 5 类:
1xx 信息,服务器收到请求,需要请求者继续执行操作
2xx 成功,操作被成功接收并处理
3xx 重定向,需要进一步的操作以完成请求
4xx 客户端错误,请求包含语法错误或无法完成请求
5xx 服务器错误,服务器在处理请求的过程中发生了错误

4.2消息报头

Accept-Ranges 表明服务器是否支持指定范围请求及哪种类型的范围请求.
Age 从原始服务器到代理缓存形成的估算时间(单位为秒,不能为负数)。
Allow 服务器支持的请求方法,当使用不支持的请求方式时返回
405。
Location 表示客户端应当到哪里去提取文档。
Refresh 表示浏览器应该在多少时间之后刷新文档,以秒计。
Server 服务器名字。Servlet一般不设置这个值,而是由Web服务器自己设置。
Via 告诉客户端响应是通过哪里发送的。

4.3空行

HTTP 响应中同样使用空行来表示消息报头结束。

4.4响应正文

响应正文服务器根据客户端的请求返回给客户端的具体数据。

5.HTTP状态码

当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。
HTTP状态码的英文为HTTP Status Code。

常见的HTTP状态码:
200 - 请求成功
301 - 资源(网页等)被永久转移到其它URL
403 服务器理解请求客户端的请求,但是拒绝执行此请求
404 - 请求的资源(网页等)不存在
500 - 内部服务器错误

5.1HTTP状态码分类

HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。
在这里插入图片描述



这篇关于学习笔记(第三天)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程