XSS(一)基础知识
文章目录
1. HTTP协议
1.1 请求方式
- GET:用于请求获取指定资源的信息。GET 请求通常用于获取数据,不应该对服务器状态做出任何更改。GET 请求的参数会附加在 URL 中。
- POST:用于向服务器提交数据,常用于提交表单数据、上传文件等。POST 请求通常会修改服务器上的资源状态,如创建新资源、更新数据等。POST 请求的参数会包含在请求体中。
1.2 HTTP请求格式
HTTP 请求由请求行(Request Line)、请求头部(Headers)、空行(CRLF)、请求体(Body)组成。以下是 HTTP 请求的基本格式:
-
请求行:请求行包含请求方法、请求的资源路径和查询参数、HTTP 协议版本,格式如下:
<方法> <URL> <HTTP版本>
例如:
GET /index.html HTTP/1.1
-
请求头部:请求头部包含关于请求的元数据信息,如用户代理、内容类型、Cookie 等,每个头部以键值对的形式表示,格式如下:
Key: Value
例如:
Host: www.example.com Content-Type: application/json
-
空行:空行用于分隔请求头部和请求体,通常用一个空行(CRLF,即回车换行符)表示。
-
请求体:对于 POST、PUT 等请求,请求体包含实际的请求数据,如表单数据、JSON 数据等。
例如,一个使用 POST 方法提交 JSON 数据的 HTTP 请求可以如下所示:
POST /api/users HTTP/1.1
Host: www.example.com
Content-Type: application/json
{
"name": "Alice",
"age": 30
}
1.3 响应格式
-
状态行:状态行包含 HTTP 协议版本、状态码和状态消息,格式如下:
<HTTP版本> <状态码> <状态消息>
例如:
HTTP/1.1 200 OK
-
响应头部:响应头部包含关于响应的元数据信息,如内容类型、内容长度、缓存控制等,每个头部以键值对的形式表示,格式如下:
Key: Value
例如:
Content-Type: text/html Content-Length: 1024
-
空行:空行用于分隔响应头部和响应体,通常用一个空行(CRLF,即回车换行符)表示。
-
响应体:响应体包含实际的响应数据,如 HTML 内容、JSON 数据等。
例如,一个返回 HTML 内容的 HTTP 响应可以如下所示:
HTTP/1.1 200 OK
Content-Type: text/html
<!DOCTYPE html>
<html>
<head>
<title>Hello, World!</title>
</head>
<body>
<h1>Hello, World!</h1>
</body>
</html>
1.4 http特点
- 无连接性:HTTP 是一种无连接的协议,即每个请求/响应周期都是独立的,服务器在处理完一个请求后会关闭连接。为了提高性能,HTTP/1.1 引入了持久连接(Keep-Alive),允许多个请求/响应共享同一个连接。
- 无状态性:HTTP 是一种无状态的协议,即服务器不会保存客户端的状态信息。每个请求都是独立的,服务器不会记住之前的请求信息。为了维护会话状态,可以使用 Cookie、Session 等机制。
- 支持多种请求方法:HTTP 定义了多种请求方法(如 GET、POST、PUT、DELETE 等),用于指定客户端对服务器资源的操作方式。这种灵活性使得可以实现不同类型的数据交互。
- 基于文本:HTTP 使用文本格式传输数据,请求和响应的内容都是以文本形式进行传输,易于阅读和调试。但也因为是明文传输,存在安全风险。
- 状态码:HTTP 使用状态码来表示请求的处理结果,如 200(成功)、404(未找到资源)、500(服务器内部错误)等。状态码帮助客户端理解服务器对请求的处理情况。
- 灵活性:HTTP 是一种灵活的协议,支持各种类型的数据传输和内容格式(如 HTML、JSON、XML 等)。同时,HTTP 的头部信息可以包含各种元数据,用于控制缓存、跨域请求、身份验证等。
- 扩展性:HTTP 协议本身是可以扩展的,通过定义新的头部字段、请求方法等,可以实现更多功能和定制化需求。HTTP/2、HTTP/3 等新版本的出现也为提高性能和安全性提供了更多支持。
2. Cookie
Cookie 是一种在客户端存储数据的机制,用于跟踪用户会话、存储用户偏好设置、实现购物车功能等。Cookie 是由服务器发送到客户端,并存储在客户端的浏览器中,每次浏览器向服务器发送请求时,都会携带相应的 Cookie 数据。
- 会话管理:Cookie 可用于跟踪用户的会话状态。服务器可以在客户端存储一个唯一的标识符(如会话 ID),以识别用户的会话,并在用户访问其他页面时保持会话状态。
- 用户认证:Cookie 可用于存储用户的登录信息,如用户名、用户 ID 等。通过 Cookie,服务器可以识别已经登录的用户,从而实现用户认证和个性化服务。
- 存储用户偏好设置:网站可以使用 Cookie 存储用户的偏好设置,如语言偏好、主题选择、字体大小等。这样用户在下次访问网站时可以保持之前的个性化设置。
- 广告定位:许多广告商使用 Cookie 来跟踪用户的浏览行为,以便提供定向广告。根据用户的兴趣和偏好,广告商可以向用户展示相关的广告内容。
- 购物车功能:在电子商务网站中,Cookie 可以用于存储用户的购物车信息。用户可以在不同页面之间保持购物车的状态,方便进行商品选择和结算。
- 安全性:Cookie 可以设置安全标志,如 Secure 和 HttpOnly 属性,以增强 Cookie 的安全性。Secure 属性表示只有在 HTTPS 连接下才能传输 Cookie,HttpOnly 属性可以防止 JavaScript 访问 Cookie,从而减少 XSS 攻击的风险。
3. Session
Session(会话)是一种在服务器端存储用户状态信息的机制,用于跟踪用户在网站上的活动和状态。每个用户访问服务器时都会创建一个唯一的会话标识符(Session ID),并将该标识符存储在服务器端,同时在客户端通过 Cookie 或 URL 参数将 Session ID 发送回服务器,以便服务器识别用户的会话状态。
- 会话管理:Session 可用于跟踪用户的会话状态。服务器可以在会话中存储用户的登录状态、购物车内容、用户偏好设置等信息,以便在用户访问网站的不同页面时保持会话状态。
- 用户认证:Session 可用于存储用户的认证信息,如用户 ID、用户名等。通过 Session,服务器可以识别已经登录的用户,并提供个性化的服务和权限控制。
- 安全性:相比 Cookie,Session 在安全性方面更可靠。Session 数据存储在服务器端,客户端只存储 Session ID,减少了敏感信息泄露的风险。此外,Session 数据可以进行加密和安全传输,提高数据安全性。
- 存储容量:相比 Cookie 的存储容量限制,Session 可以存储更大量的数据。服务器端存储 Session 数据,可以灵活地管理和控制存储空间,适用于存储复杂的用户信息和状态数据。
- 会话过期:Session 可以设置过期时间,一旦用户长时间不活动或者关闭浏览器,会话可以自动过期并销毁,从而释放服务器资源和确保安全性。
- 跨平台兼容:Session 可以跨平台兼容,不受浏览器和设备限制。无论用户使用什么浏览器或设备访问网站,Session 机制都可以正常工作。
4. Javascript操纵cookie
Cookie-Editor 修改cookie,成功登录
如何远程获取其他用户的cookie?
JavaScript语法
1.读取cookie:document.cookie;
2.设置cookie:documen.cookie=“”;
3.修改:
4.删除:
cookie不能跨域名,跨浏览器使用