XSS(一)基础知识

XSS(一)基础知识

1. HTTP协议

1.1 请求方式

  1. GET:用于请求获取指定资源的信息。GET 请求通常用于获取数据,不应该对服务器状态做出任何更改。GET 请求的参数会附加在 URL 中。
  2. POST:用于向服务器提交数据,常用于提交表单数据、上传文件等。POST 请求通常会修改服务器上的资源状态,如创建新资源、更新数据等。POST 请求的参数会包含在请求体中。

1.2 HTTP请求格式

HTTP 请求由请求行(Request Line)、请求头部(Headers)、空行(CRLF)、请求体(Body)组成。以下是 HTTP 请求的基本格式:

  1. 请求行:请求行包含请求方法、请求的资源路径和查询参数、HTTP 协议版本,格式如下:

    <方法> <URL> <HTTP版本>
    

    例如:

    GET /index.html HTTP/1.1
    
  2. 请求头部:请求头部包含关于请求的元数据信息,如用户代理、内容类型、Cookie 等,每个头部以键值对的形式表示,格式如下:

    Key: Value
    

    例如:

    Host: www.example.com
    Content-Type: application/json
    
  3. 空行:空行用于分隔请求头部和请求体,通常用一个空行(CRLF,即回车换行符)表示。

  4. 请求体:对于 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 响应格式

  1. 状态行:状态行包含 HTTP 协议版本、状态码和状态消息,格式如下:

    <HTTP版本> <状态码> <状态消息>
    

    例如:

    HTTP/1.1 200 OK
    
  2. 响应头部:响应头部包含关于响应的元数据信息,如内容类型、内容长度、缓存控制等,每个头部以键值对的形式表示,格式如下:

    Key: Value
    

    例如:

    Content-Type: text/html
    Content-Length: 1024
    
  3. 空行:空行用于分隔响应头部和响应体,通常用一个空行(CRLF,即回车换行符)表示。

  4. 响应体:响应体包含实际的响应数据,如 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特点

  1. 无连接性:HTTP 是一种无连接的协议,即每个请求/响应周期都是独立的,服务器在处理完一个请求后会关闭连接。为了提高性能,HTTP/1.1 引入了持久连接(Keep-Alive),允许多个请求/响应共享同一个连接。
  2. 无状态性:HTTP 是一种无状态的协议,即服务器不会保存客户端的状态信息。每个请求都是独立的,服务器不会记住之前的请求信息。为了维护会话状态,可以使用 Cookie、Session 等机制。
  3. 支持多种请求方法:HTTP 定义了多种请求方法(如 GET、POST、PUT、DELETE 等),用于指定客户端对服务器资源的操作方式。这种灵活性使得可以实现不同类型的数据交互。
  4. 基于文本:HTTP 使用文本格式传输数据,请求和响应的内容都是以文本形式进行传输,易于阅读和调试。但也因为是明文传输,存在安全风险。
  5. 状态码:HTTP 使用状态码来表示请求的处理结果,如 200(成功)、404(未找到资源)、500(服务器内部错误)等。状态码帮助客户端理解服务器对请求的处理情况。
  6. 灵活性:HTTP 是一种灵活的协议,支持各种类型的数据传输和内容格式(如 HTML、JSON、XML 等)。同时,HTTP 的头部信息可以包含各种元数据,用于控制缓存、跨域请求、身份验证等。
  7. 扩展性:HTTP 协议本身是可以扩展的,通过定义新的头部字段、请求方法等,可以实现更多功能和定制化需求。HTTP/2、HTTP/3 等新版本的出现也为提高性能和安全性提供了更多支持。

2. Cookie

Cookie 是一种在客户端存储数据的机制,用于跟踪用户会话、存储用户偏好设置、实现购物车功能等。Cookie 是由服务器发送到客户端,并存储在客户端的浏览器中,每次浏览器向服务器发送请求时,都会携带相应的 Cookie 数据。

  1. 会话管理:Cookie 可用于跟踪用户的会话状态。服务器可以在客户端存储一个唯一的标识符(如会话 ID),以识别用户的会话,并在用户访问其他页面时保持会话状态。
  2. 用户认证:Cookie 可用于存储用户的登录信息,如用户名、用户 ID 等。通过 Cookie,服务器可以识别已经登录的用户,从而实现用户认证和个性化服务。
  3. 存储用户偏好设置:网站可以使用 Cookie 存储用户的偏好设置,如语言偏好、主题选择、字体大小等。这样用户在下次访问网站时可以保持之前的个性化设置。
  4. 广告定位:许多广告商使用 Cookie 来跟踪用户的浏览行为,以便提供定向广告。根据用户的兴趣和偏好,广告商可以向用户展示相关的广告内容。
  5. 购物车功能:在电子商务网站中,Cookie 可以用于存储用户的购物车信息。用户可以在不同页面之间保持购物车的状态,方便进行商品选择和结算。
  6. 安全性:Cookie 可以设置安全标志,如 Secure 和 HttpOnly 属性,以增强 Cookie 的安全性。Secure 属性表示只有在 HTTPS 连接下才能传输 Cookie,HttpOnly 属性可以防止 JavaScript 访问 Cookie,从而减少 XSS 攻击的风险。

3. Session

Session(会话)是一种在服务器端存储用户状态信息的机制,用于跟踪用户在网站上的活动和状态。每个用户访问服务器时都会创建一个唯一的会话标识符(Session ID),并将该标识符存储在服务器端,同时在客户端通过 Cookie 或 URL 参数将 Session ID 发送回服务器,以便服务器识别用户的会话状态。

  1. 会话管理:Session 可用于跟踪用户的会话状态。服务器可以在会话中存储用户的登录状态、购物车内容、用户偏好设置等信息,以便在用户访问网站的不同页面时保持会话状态。
  2. 用户认证:Session 可用于存储用户的认证信息,如用户 ID、用户名等。通过 Session,服务器可以识别已经登录的用户,并提供个性化的服务和权限控制。
  3. 安全性:相比 Cookie,Session 在安全性方面更可靠。Session 数据存储在服务器端,客户端只存储 Session ID,减少了敏感信息泄露的风险。此外,Session 数据可以进行加密和安全传输,提高数据安全性。
  4. 存储容量:相比 Cookie 的存储容量限制,Session 可以存储更大量的数据。服务器端存储 Session 数据,可以灵活地管理和控制存储空间,适用于存储复杂的用户信息和状态数据。
  5. 会话过期:Session 可以设置过期时间,一旦用户长时间不活动或者关闭浏览器,会话可以自动过期并销毁,从而释放服务器资源和确保安全性。
  6. 跨平台兼容:Session 可以跨平台兼容,不受浏览器和设备限制。无论用户使用什么浏览器或设备访问网站,Session 机制都可以正常工作。

4. Javascript操纵cookie

Cookie-Editor 修改cookie,成功登录

如何远程获取其他用户的cookie?

JavaScript语法

1.读取cookie:document.cookie;

2.设置cookie:documen.cookie=“”;

3.修改:

4.删除:

cookie不能跨域名,跨浏览器使用

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值