一、web详解
Web(World Wide Web):即全球广域网,也称为万维网,它是一种基于超文本和HTTP的、全球性的、动 态交互的、跨平台的分布式图形信息系统。是建立在Internet上的一种网络服务,为浏览者在Internet上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级链接将Internet上的信息节点组织成一个互关联的网状结构。
互联网>因特网>万维网
万维网(World Wide Web,简称web或www)是互联网的一种应用服务,在1989年3月12日,欧洲粒子物理研所(CERN)的计算机科学家蒂姆·伯纳斯·李提出。它是通过网页浏览器访问的、基于超文本传输协(HTTP/HTTPS)的信息系统。万维网允许用户通过浏览器查看网页、图片、视频等内容,并通过超链接在不同网页之间导航。
因特网(Intranet)通常指的是一个组织内部的私有网络。它使用互联网技术(如TCP/IP协议和网页浏览器)来建立一个内部网络,但它与公共互联网隔离,只有授权用户(通常是该组织的员工)可以访问。
互联网(Internet)是全球性的计算机网络,由成千上万的计算机网络互联而成。它允许全球的计算机和服务器通过标准的协议(如TCP/IP)相互连接和通信。简单来说,互联网是全球网络的总称,提供了传输数据的基础设施。
1.1web发展史
万维网(Web)自诞生以来经历了4个重要的发展阶段,从简单的超文本系统演变成现代复杂的全球网络。
Web 1.0:信息展示(1989 - 2004):
- 1989年,由英国计算机科学家 蒂姆·伯纳斯-李(Tim Berners-Lee) 在欧洲核子研究中心(CERN)提出了万维网的构想。
- 1990年,他开发了第一个网页浏览器和服务器,发布了世界上第一个网页。万维网诞生。
特点:
web1.0主要是大量使用静态的 HTML 网页来发布信息,并开始使用浏览器来获取信息,这个时候主要是单向的信息传递,用户只能浏览而无法交互。网站内容更新慢,信息流动性差,用户基本是信息的被动接受者。
Web 2.0:交互与社交(2004 - 2010s):
随着技术的进步,Web 进入了 2.0 阶段,重点转向了用户生成内容和社交互动。这一阶段标志着用户不再仅仅是信息的被动接受者,开始能够通过平台发布内容和互动。
特点:
1.用户生成内容:用户可以创建和分享内容(如博客、视频、评论、社交媒体帖子等)。
2.动态网页:网站可以根据用户的输入进行实时更新,如评论系统、社交平台的更新等。
3.Ajax 和 JavaScript 技术的使用让网页更加动态和互动。
4.社交网络:MySpace、Facebook、Twitter等社交平台兴起,改变了人们在线互动的方式。
Web 3.0:语义网与智能化(2010s 至今)
Web 3.0 也被称为语义网,其核心目标是使机器能够理解和解释网页上的数据,以提供更加个性化和智能化的用户体验。Web 3.0 的发展受到人工智能、机器学习、区块链等技术的推动。
特点:
1.语义网:通过语义技术(如RDF、OWL等),网页信息更加结构化,以便机器更好地理解和处理。
2.个性化体验:利用人工智能和大数据分析,为用户提供个性化的内容和服务推荐(如Amazon和Netflix的推荐算法)。
3.去中心化:区块链和分布式技术的引入推动了去中心化的应用,如去中心化金融(DeFi)和去中心化社交网络。
4.物联网 (IoT):与物联网技术结合,互联网连接的设备不再局限于计算机和手机,还包括家居、汽车、穿戴设备等。
Web 4.0:智能和全息网络(未来发展趋势)
Web 4.0 是一个未来趋势,旨在将互联网与物理世界更加无缝地整合。未来的Web 可能会利用人工智能、物联网和增强现实技术实现全息网络、虚拟现实(VR)和增强现实(AR)的更深入应用。
未来特点:
1.全息显示:3D全息显示和实时互动,用户可以通过虚拟和增强现实与网络互动。
2.人工智能驱动的自治系统:网页和应用将能够自主运行、优化和互动,提供极度个性化的服务。
3.完全沉浸式体验:虚拟世界和现实世界的界限可能越来越模糊。
1.2 URL(Uniform Resource Locator)
URL(Uniform Resource Locator ):统一资源定位符(俗称网页地址或简称网址)是因特网上标准的资源的地址(Address),如同在网络上的门牌。它最初是由蒂姆·伯纳斯·李发明用来作为万维网的地址,现在它已经被万维网联盟编制为因特网标准RFC 1738。
URL--格式

说明:
1.protocol 协议:指定访问资源所使用的协议。常用的协议是http、https、ftp等 。
2.hostname 主机地址:可以是域名,也可以是IP地址 。
3.port 端口:用于指定服务器上的端口号。如果未指定,使用默认端口。http协议默认端口是:80端口 ,HTTPS 默认端口:443端口。
4.path/parameter路径:指向服务器上资源的具体位置。路径结构类似于文件系统目录,通常用于定位文件或应用程序。
5.query 查询参数: 用于向服务器传递额外信息,通常在动态网页中用于指定查询内容。多个参数之间使用 & 分隔,每个参数的键和值之间使用 = 连接。
以 URL https://www.example.com:8080/path/to/page.html?id=123&type=article#section2 为例:
1.https:协议(使用加密的超文本传输协议)。
2.www.example.com:主机名(服务器域名)。
3.:8080:端口号(使用非标准的 8080 端口)。
4./path/to/page.html:路径(服务器上的文件路径)。
5.?id=123&type=article:查询参数(查询ID为123,类型为article)。
二、html基础
2.1 html概述
HTML 是用来描述网页的一种语言。HTML 是一种在 Web 上使用的通用标记语言。HTML 允许你格式化文本,添加图片,创建链接、输入表单、框架和表格等等,并可将之存为文本文件,浏览器即可读取和显示。
- HTML 指的是超文本标记语言: Hyper Text Markup Language。
- HTML 不是一种编程语言,而是一种标记语言。
- 标记语言是一套标记标签 (markup tag)。
- HTML 使用标记标签来描述网页。
- HTML 文档包含了HTML 标签及文本内容。
- HTML文档也叫做 web 页面。
元素和标签
标签是 HTML 文档的基本构造单元,用于定义网页中的各个元素。标签本身是由尖括号包围的标记,用来告诉浏览器如何渲染内容。HTML 标签通常成对出现,包含开始标签和结束标签,但某些标签是自闭合的。
比如:<p>hello world</p>
<p> 是开始标签,表示一个段落的开始。
</p> 是结束标签,表示段落的结束。
开始和结束标签之间的内容是这个段落的文本。
元素是由 HTML 标签包围的内容。换句话说,元素包含了开始标签、结束标签和它们之间的内容。元素是网页的组成部分,浏览器通过元素来确定如何显示网页内容。
比如:完整的 <p>...</p> 包含标签和它内部的文本 "hello world",这就是一个完整的 元素。
2.2 实例
新建一个1.html文件,内容如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>网页标题</title>
</head>
<body>
<h1>我的第一个标题</h1>
<p>我的第一个段落</p>
</body>
</html>
<!DOCTYPE html>: 声明为 HTML5 文档
<html>: 元素是 HTML 页面的根元素
<head>: 包含元(meta)数据,不会直接显示在页面中。常用来引入CSS、设置网页编码和标题等。
<meta charset="UTF-8">:设置文档的字符编码为 UTF-8,确保网页可以正确显示各种语言字符,不会出现乱码。
<title>: 元素描述了文档的网页标题
<body>: 元素包含了可见的页面内容
<h1>: 元素定义一个大标题
<p>: 元素定义一个段落

Web浏览器(如谷歌浏览器,Internet Explorer,Firefox,Safari)是用于读取 HTML文件,并将其作为网页显示。
浏览器并不是直接显示的HTML标签,但可以使用标签来决定如何展现HTML页面的内容给用户:

2.3各部分详解
1.标题
HTML 标题是通过<h1> - <h6>标签来定义的。将 h1 用作主标题(最重要的),其后是 h2(次 重要的),再其次是 h3,以此类推。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>网页标题</title>
</head>
<body>
<h1>我的第一个标题</h1>
<h2>我的第二个标题</h2>
<h3>我的第三个标题</h3>
<h4>我的第四个标题</h4>
<h5>我的第五个标题</h5>
<h6>我的第六个标题</h6>
</body>
</html>

2.段落
HTML 段落是通过标签 <p>来定义的。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>网页标题</title>
</head>
<body>
<p>一个段落</p>
<p>二个段落</p>
<p>三个段落</p>
</body>
</html>

3.链接
HTML 链接是通过标签<a>来定义的。 标签的 href 属性用于指定超链接目标的 URL,在 href 属性中指定链接的地址。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>网页标题</title>
</head>
<body>
<a href="https://www.runoob.com/html/html-tutorial.html">这个链接是菜鸟教程</a>
</body>
</html>

4.图像
HTML 图像是通过标签<img>来定义的。height=高度 width=宽度 ,注意: 图像的名称和尺寸是以属性的形式提供的。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>网页标题</title>
</head>
<body>
<img src="C:\Users\lzq\Desktop\1.png" whdth="258" height="258" />
</body>
</html>

5. 列表
HTML 支持两种列表:
- 无序列表:使用<ul>标签,列表项用<li>标签。
- 有序列表:使用<ol>标签,列表项用<li>标签。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>网页标题</title>
</head>
<body>
<img src="C:\Users\lzq\Desktop\1.png" whdth="258" height="258" />
<ul>
<li>苹果</li>
<li>香蕉</li>
<li>橙子</li>
</ul>
<ol>
<li>第一步</li>
<li>第二步</li>
</ol>
</body>
</html>

6.表格
使用 <table> 标签创建表格,表格由行(<tr>)和单元格(<td>)构成,表头使用 <th> 标签。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>网页标题</title>
</head>
<body>
<img src="C:\Users\lzq\Desktop\1.png" whdth="258" height="258" />
<table>
<tr>
<th>名称</th>
<th>年龄</th>
</tr>
<tr>
<td>张三</td>
<td>25</td>
</tr>
</table>
</body>
</html>

7.水平线
<hr/>标签在 HTML 页面中创建水平线。 hr 元素可用于分隔内容。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>网页标题</title>
</head>
<body>
<img src="C:\Users\lzq\Desktop\1.png" whdth="258" height="258" />
<hr/>
<table>
<tr>
<th>名称</th>
<th>年龄</th>
</tr>
<tr>
<td>张三</td>
<td>25</td>
</tr>
</table>
</body>
</html>
<hr/>

8.换行
<br>换行符标签,自闭合,用于文本中插入换行。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>网页标题</title>
</head>
<body>
<img src="C:\Users\lzq\Desktop\1.png" whdth="258" height="258" />
<p>苹果<br>香蕉<br>荔枝</p>
</body>
</html>

9.注释
<!-- 这是一个注释 -->将注释插入 HTML 代码中,这样可以提高其可读性,使代码更易被人理解。浏览器会忽略注释, 也不会显示它们。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>网页标题</title>
</head>
<body>
<img src="C:\Users\lzq\Desktop\1.png" whdth="258" height="258" />
<!--这是一个注释 -->
<!--注释是不会在浏览器中显示 -->
<p>苹果<br>香蕉<br>荔枝</p>
</body>
</html>

三、Web访问流程
3.1http概述
HTTP(HyperText Transfer Protocol,超文本传输协议)是用于客户端(如浏览器)和服务器之间通信的基础协议,它通常运行在TCP之上。HTTP 是无状态协议,这意味着每个请求/响应是独立的,不会保留之前的交互状态。

HTTP 协议的发展历程:
1.HTTP/0.9(1991年)
概述:HTTP/0.9 是最早的版本,由 Tim Berners-Lee 提出,用于传输简单的 HTML 文本,HTTP/0.9 是世界上第一个允许在互联网上浏览网页的协议。
特点:
1.只支持 GET 方法,无法处理其他 HTTP 请求方法如 POST、PUT 等。
2.没有请求头或状态码,只传输纯文本。
3.没有支持多媒体类型的能力,无法处理非文本内容。
4.每次请求后立即关闭 TCP 连接。
2.HTTP/1.0(1996年)
概述:HTTP/1.0 是互联网工程任务组(IETF)在 1996 年发布的标准,极大扩展了 HTTP/0.9 的功能。
特点:
1.支持多种请求方法:GET、POST 和 HEAD。
2.引入了HTTP 响应状态码(如 404, 200),用于向客户端返回服务器的处理结果。
3.引入了HTTP 头,包括 Content-Type、Content-Length 等,用于描述返回的数据类型、大小等信息。
4.支持传输多种媒体类型,不仅仅是纯文本,还可以传输图片、视频等。
5.每次请求后依然关闭 TCP 连接。
缺点:由于每次请求都会重新建立连接,导致资源的利用效率不高,尤其在传输大量数据时性能较差。
3.HTTP/1.1(1997年)
概述:HTTP/1.1 是对 HTTP/1.0 的重大改进,它成为了 HTTP 协议的标准版本,并被广泛使用至今。最初在 1997 年作为 RFC 2068 发布,并在 1999 年被更新为 RFC 2616。
特点:
1.持久连接(Keep-Alive):默认情况下,HTTP/1.1 允许在同一 TCP 连接上发送多个请求,减少了连接的建立与关闭带来的延迟。
2.管道化:允许客户端在同一连接上并发发送多个请求,而不必等待响应,这提高了传输效率。
3.缓存控制:引入了新的头字段如 Cache-Control,使得客户端和服务器可以更好地控制缓存行为。
4.分块传输编码:允许服务器逐块发送响应数据,使得动态生成的内容能够逐步传输,客户端无需等待整个内容生成完毕即可开始处理。
5.主机头字段:允许在同一 IP 地址下托管多个域名(虚拟主机),通过 Host 头字段来区分不同的请求。
4.HTTP/2(2015年)
概述:HTTP/2 是对 HTTP/1.1 的大幅改进,由 IETF 在 2015 年发布为 RFC 7540。它旨在提高 Web 性能,尤其是解决 HTTP/1.1 的队头阻塞问题。
特点:
1.二进制分帧:HTTP/2 使用二进制而非文本协议,这提高了数据的处理效率和解析速度。
2.多路复用:允许多个请求和响应同时在一个连接上流动,解决了 HTTP/1.1 的队头阻塞问题。
3.头部压缩:通过 HPACK 压缩算法减少了头部信息传输的冗余。
4.服务器推送:允许服务器主动向客户端推送资源,而无需等待客户端请求,提高资源加载速度。
5.HTTP/3(2020年,基于 QUIC)
概述:HTTP/3 是最新的 HTTP 协议版本,基于 Google 开发的 QUIC 协议。它不再使用传统的 TCP,而是基于 UDP,进一步减少延迟并优化传输效率。
特点:
1.基于 QUIC:QUIC 是一个运行在 UDP 之上的协议,提供了类似 TCP 的可靠性,同时解决了 TCP 中的队头阻塞问题。QUIC 还内置了 TLS 加密。
2.更快的连接建立:与 HTTP/2 需要先建立 TCP 连接,再进行 TLS 握手不同,HTTP/3 将这两个步骤合并,减少了连接建立时间。
3.多路复用:与 HTTP/2 相似,HTTP/3 也支持多路复用,并进一步减少了丢包引起的性能损失。
Web应用访问流程:
1、在浏览器地址栏输入URL访问 。
2、浏览器进行域名解析获得IP地址 。
3、解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接。
4、浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手 的第三个报文的数据发送给服务器。
5、服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器。
6、浏览器将该 html 文本进行解析并显示内容。

HTTP-请求方法:
1.GET
功能:从服务器获取指定资源,数据通常通过 URL 传递。
特点:
- 幂等:多次执行相同的请求不会影响服务器状态。
- 请求的数据通过 URL 传递,不安全,不适合传输敏感信息。
- 通常用于页面加载、静态资源请求(如图片、样式文件等)。

2.POST
功能:发送请求体内容,通常用于表单提交、上传文件或提交 JSON 数据。
特点:
- 非幂等:多次提交相同请求可能导致不同的结果,如重复创建资源。
- 数据在请求体中传递,较 GET 更加安全和灵活。

3.PUT
功能:用请求体中的数据替换服务器上的资源。如果资源不存在,可以创建新的资源。
特点:
- 幂等:多次发送相同请求产生相同结果。
- 用于上传文件或更新已有的数据。

4.DELETE
功能:请求服务器删除指定的资源路径。
特点:
- 幂等:删除请求多次执行后,结果相同,即资源最终会被删除。

5.PATCH
功能:只修改资源中的部分内容,而不是替换整个资源。
特点:
- 非幂等:如果多次 PATCH 可能会产生不同结果(取决于修改的内容)。
- 适合需要对资源进行部分修改的情况。

6.HEAD
功能:与 GET 类似,但只返回响应头,不返回响应体,用于检查资源的元信息或响应头而不传输资源本身。
特点:
- 幂等:多次请求不会改变服务器状态。
- 常用于检查资源是否存在或是否已被修改(如缓存验证)。
![]()
7.OPTIONS
功能:返回服务器支持的 HTTP 方法和其他通信选项,通常用于跨域请求预检。
特点:
- 幂等:不会改变服务器状态。
- 主要用于 CORS(跨域资源共享)中的预检请求。

8.CONNECT
描述:用于将请求连接到代理服务器,常用于 HTTPS 和加密的请求隧道。
功能:将请求的连接转换为 TCP/IP 隧道,用于安全的 HTTPS 连接。

9.TRACE
描述:用于调试,服务器会回显收到的请求,帮助客户端了解请求的完整路径。
功能:检查 HTTP 请求在服务器上处理的中间过程,通常用于诊断网络问题。

3.2 GET 和 POST 的区别

3.3报文格式
HTTP 请求报文结构:请求行(Request Line)、请求头部(Request Headers)、空行、请求体(Request Body,可选)。
1.请求行(Request Line)
请求行是 HTTP 请求的第一行,包含三个部分:
- 请求方法:用于定义操作类型,如
GET、POST、PUT等。 - 请求路径:客户端请求的资源路径,相对于服务器的根目录。
- HTTP 版本:协议的版本号,常见为
HTTP/1.1或HTTP/2。

2.请求头部(Request Headers)
请求头部包含请求的元信息,描述客户端的环境、所需的资源类型、以及客户端和服务器之间的其他通信信息。每个头部信息由字段名和值构成,以冒号 : 分隔。
- Host:指定目标主机及端口号,例如
Host: www.example.com。 - User-Agent:标识发出请求的客户端信息,例如
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)。 - Accept:告诉服务器客户端可以处理的响应内容类型,例如
Accept: text/html。 - Content-Type:客户端发送的内容类型(用于 POST 请求),如
Content-Type: application/json。 - Content-Length:请求体的长度(字节数)。

(1)HTTP请求头-Cookie:
Cookie 的基本概念:
- Cookie 是一小段文本数据,服务器通过 HTTP 响应发送给客户端(浏览器),然后浏览器将其存储并在后续请求中通过
Cookie请求头发送回服务器。 - 服务器利用 Cookie 来识别用户,并在请求之间保持状态(如登录会话、购物车等)。
- Cookie 的数据是以键值对的形式存储的,每个 Cookie 包含名称、值、到期时间、路径、域名等。
- Cookie用于保持状态、管理会话、跟踪用户活动等。
Cookie是 Web 应用实现会话管理、身份验证和用户偏好存储等功能的核心部分。

客户端发送了三个 Cookie:
session_id=abc123:可能用于识别用户会话。theme=dark:用于存储用户的主题偏好。language=en:用于存储用户的语言选择。
(2)HTTP请求头-Referer(来源)
HTTP Referer是请求头的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器该 网页是从哪个页面链接过来的,服务器因此可以获得一些信息用于处理。

用户点击了 Google 搜索结果中的一个链接,跳转到 www.example.com,因此请求头中包含了 Referer,指明用户是从 Google 搜索页面跳转过来的。
3.空行
请求头部结束后必须有一个空行。该空行的作用是告诉服务器,接下来的部分是请求体(如果存在)。
4.请求体(Request Body,可选)
GET 请求:通常不包含请求体,数据通过 URL 的查询字符串传递。

POST 请求:通常包含请求体,传输数据,例如表单提交或 JSON 数据。

3.4 HTTP状态码
状态信息:
1.临时响应(1xx):表示临时响应并需要请求者继续执行操作的状态代码 。
2.成功(2xx):表示成功处理了请求的状态代码 。
3.重定向(3xx):表示要完成请求,需要进一步操作,通常用来重定向 。
4.请求错误(4xx):表示请求可能出错,妨碍了服务器的处理 。
5.服务器错误(5xx):表示服务器在尝试处理请求时发生内部错误。




3.5HTTP的缺陷
HTTP 是无状态协议,这意味着每次请求都是独立的,服务器不会自动记录和跟踪请求之间的状态,也不进行验证客户端是否是真实存在,传统的 HTTP 没有加密,所有数据(包括敏感信息如密码、个人信息等)都是以明文形式传输的。
即:
① 通信双方使用明文传输(不加密),内容可能会被窃听。
② 不验证通信方的身份,因此可能遭遇伪装。
③ 无法证明报文的完整性,所以有可能已遭篡改。
为了防止这些问题的发生,出现了 HTTPS。

3.6 https概述
HTTPS(HyperText Transfer Protocol Secure,安全超文本传输协议)是基于 HTTP 协议的安全版本,用来加密客户端与服务器之间的通信,确保数据传输的安全性和完整性。HTTPS 在 HTTP 的基础上,通过加入SSL/TLS(安全套接层 / 传输层安全协议)为通信提供加密功能。
HTTPS 的基本原理
1.加密通信:HTTPS 使用 SSL/TLS 对数据进行加密,确保即使数据被中间人截获,也无法读取或篡改数据。
2.身份验证:通过 SSL/TLS 数字证书,确保服务器的身份是经过可信任的第三方(如 CA,证书颁发机构)验证的,防止用户访问伪造网站。
3.数据完整性:HTTPS 提供消息完整性校验,确保数据在传输过程中没有被篡改。

3.7 HTTPS 与 HTTP 的区别

3.8 burp抓包
Burp Suite是一款集成化的渗透测试工具,包含了很多功能,可以帮助我们高效地完成对Web应用程序的渗透测试和攻击。
Burp Suite由Java语言编写,基于Java自身的跨平台性,使这款软件学习和使用起来更方便。Burp Suite不像其他自动化测试工具,它需要手工配置一些参数,触发一些自动化流程,然后才会开始工作。
代理服务器---“中间商”

四、WEB应用安全
4.1 浏览器安全
随着互联网的发展,人们发现浏览器才是互联网最大的入口,是连接用户和互联网的主要工具,它往往成为网络攻击者的目标。因此浏览器市场的竞争也日趋白热化。
浏览器安全在这种激烈竞争的环境中被越来越多的人所重视。一方面,浏览器天生就是一个客户端,如果具备了安全功能,就可以像安全软件一样对用户上网起到很好的保护作用;另一方面,浏览器安全也成为浏览器厂商之间竞争的一张底牌,浏览器厂商希望能够针对安全建立起技术门槛,以获得竞争优势。 随着浏览器版本的不断更新,浏览器安全功能变得越来越强大。

4.2 Cookie
Web应用程序是使用HTTP协议传输数据的。HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。比如:打开一个登录页面,输入账号密码,登录进去了但不小心操作失误,关闭了窗口,那就需要重新输入账号密码。要跟踪该会话,必须引入一种机制。
Cookie就是这样的一种机制。它可以弥补HTTP协议无状态的不足。在Session出现之前,基本上所有的网站都采用Cookie来跟踪会话。
Cookie的工作原理:
1.客户端发起请求:用户通过浏览器访问某个网站,浏览器发送请求到服务器。
2.服务器创建并发送 Cookie:如果服务器需要跟踪用户状态(例如登录状态、购物车信息等),它会在响应中生成一个 Cookie 并通过 HTTP 响应头 Set-Cookie 发送给客户端。这个 Cookie 通常包含用户的会话信息(例如会话 ID)或其他重要数据。

sessionId=abc123是服务器分配给用户的会话标识。Max-Age=3600表示这个 Cookie 的有效期为 3600 秒(1 小时)。Path=/表示这个 Cookie 在网站的所有路径下都有效。HttpOnly表示这个 Cookie 只能通过 HTTP 协议传输,不能通过 JavaScript 访问,从而增强安全性。
3.客户端保存 Cookie:浏览器接收到 Set-Cookie 指令后,会将 Cookie 保存在本地,按照服务器设置的有效期存储。
4.客户端随请求发送 Cookie:当用户再次访问该网站时,浏览器会自动将与该网站相关的 Cookie 通过HTTP 请求头 Cookie 一同发送给服务器。

5.服务器检查并处理 Cookie:服务器收到客户端发送的 Cookie 后,可以通过检查其中的内容来识别用户状态。例如,服务器可以通过检查 sessionId 来恢复用户的会话数据,判断用户是否已经登录,并做出相应的响应。
6.修改或删除 Cookie:服务器也可以在后续的响应中,通过再次使用 Set-Cookie 指令修改 Cookie 的内容或删除 Cookie(通过设置过期时间为过去的时间)。

4.3 Session
Session(会话)是在服务器端保存用户与网站交互期间的一系列数据,用于保持用户状态信息。与客户端的 Cookie 不同,Session 的数据存储在服务器上,而客户端只存储一个标识符(通常是通过 Cookie 传递),用于与服务器上的 Session 数据进行关联。
Session 的工作原理:
1.客户端发起请求:用户访问某个网站时,客户端(通常是浏览器)向服务器发送请求。
2.服务器创建 Session:如果服务器发现客户端没有现有的 Session(通常是首次访问或会话已过期),服务器会创建一个新的 Session 对象,并为其生成一个唯一的标识符,称为 Session ID。
3.Session ID 发送到客户端:服务器通过 HTTP 响应头的 Set-Cookie 指令,将生成的 Session ID 发送给客户端,通常存储在客户端的 Cookie 中。

4.客户端保存 Session ID:客户端的浏览器会将 Session ID 存储在 Cookie 中,通常直到会话结束或 Cookie 过期。
5.客户端发送请求并附带 Session ID:当用户在同一会话期间再次发送请求时,浏览器会自动将该 Session ID 通过 Cookie 头发送回服务器。

6.服务器根据 Session ID 获取数据:服务器接收到请求后,根据传递的 Session ID 在服务器端查找对应的 Session 数据,恢复用户的状态或其他信息。
7.维护和修改 Session 数据:服务器可以在用户操作过程中动态地修改或更新与该 Session 关联的数据。例如,在购物网站中,用户的购物车信息可以随着每次添加或移除商品而更新保存在 Session 中。

4.4 Cookie/Session的区别
Cookie 和 Session 都用于在无状态的 HTTP 协议中保持用户的状态,但它们在工作方式、存储位置和安全性等方面存在明显区别。

4.5 同源策略
同源策略(Same origin policy): 由NetScape提出的一个著名的安全策略,用于浏览器中一种关键的安全机制,防止不同来源的网页之间的恶意交互。它限制了一个不同源加载的文档或脚本与另一个不同源的资源进行交互。通过这一策略,浏览器可以有效防止跨站点攻击(如跨站点脚本攻击和跨站点请求伪造)。
所谓的同源,指的是协议,域名,端口相同。


4.6 浏览器沙箱
浏览器沙箱(Browser Sandbox)是一种安全机制,用于将浏览器进程与操作系统和其他进程隔离开来,防止潜在的恶意代码通过浏览器危害操作系统或用户的文件。沙箱技术在浏览器安全中扮演着至关重要的角色,它限制了网页或插件中的恶意代码对操作系统的访问权限的威胁,减少了被攻击后对系统造成的损害。
而现今的浏览器中,虽然有许多进程架构由 SandBox 保护,但浏览器所加载的一些第三方插件却往往不受 Sandbox 管辖,比如近年来 Pwn2Own 大会上被攻克的浏览器,往往都是因为第三方插件出现的安全漏洞导致的。Flash, PDF, .NetFramework 在近年来都成为浏览器攻击的热点。

4.7 OWASP TOP10
OWASP(开放式Web应用程序安全项目)是一个开放的社区,由非营利组织 OWASP基金会支持的项目。对所有致力于改进应用程序安全的人士开放,旨在提高对应用程序安全性的认识。 其最具权威的就是“10项最严重的Web 应用程序安全风险列表” ,总结并更新Web应用程序中最可能、最常见、最危险的十大漏洞,是开发、测试、服务、咨询人员应知应会的知识。

例:1.OWASP TOP 10漏洞的原理 和攻击方式以及防御方法 - FreeBuf网络安全行业门户
2.owasp top10 | 十大常见漏洞详解_owasp top 10 2024-CSDN博客
4.8 X-ray漏扫工具
xray是一款辅助评估的扫描工具,不带有攻击。且支持 Windows / macOS / Linux 多种操作系统。
主动扫描会扫描整个网站
命令:xray_windows_amd64.exe webscan --basic-crawler http://127.0.0.1/pikachu/ --html-output pikachu.html


被动扫描只能扫描你访问浏览过的界面,所以在扫描的时候,需要自己浏览网站的各个模块,这个扫描模式相较于主动扫描,没那么容易被WAF发现。
命令:xray_windows_amd64.exe webscan --listen 127.0.0.1:7778 --html-output xhcms2.html


5684

被折叠的 条评论
为什么被折叠?



