Sessions

Posted by r3kind1e - Cybersecurity Insights and Penetration Testing on September 7, 2021

Sessions-Study Guide

Sessions(会话)

有时,Web 开发人员更喜欢将某些信息存储在服务器端而不是客户端; 这样做是为了隐藏应用程序逻辑,或者只是为了避免典型的 cookie 来回数据传输。

会话是一种机制,可以让网站在服务器端存储特定于给定访问的变量。

每个用户会话都由服务器分配给客户端的会话 ID (session id)或令牌(token)标识。

客户端然后为每个后续请求呈现此 ID,从而被服务器识别。

通过会话 ID,服务器检索客户端的状态及其所有相关变量。 服务器将会话 ID 存储在其存储器中的文本文件中。

Sessions Example

image-20210907161606590

Sessions Cookies(会话Cookie)

Web 应用程序如何在 Web 浏览器上安装会话 ID?

通过使用会话 cookie。

现在是时候看看如何使用 HTTP 会话了!

会话 cookie 只包含一个指向会话的参数值对。

1
2
3
SESSION=0wvCtOBWDH8w
PHPSESSID=13Kn5Z6Uo4pH
JESSIONID=W7DPUBgh7kTM

运行 PHP 的网站使用“PHPSESSID”参数名称安装会话 cookie,而 JSP 网站使用“JSESSIONID”。 每种开发语言都有自己的默认会话参数名称。

当然,Web 开发者也可以选择使用自定义参数名称。

如果需要,服务器会在浏览器执行某种活动后安装会话 cookie,例如:

  • 打开特定页面
  • 更改 Web 应用程序中的设置
  • 在登录

然后浏览器在后续请求中使用 cookie。 一个会话可能包含许多变量,因此发送一个小 cookie 可以保持较低的带宽使用率。

在以下示例中,您可以看到会话 cookie 的作用。

Session Cookies Example

客户端使用登录表单来POST用户的凭据。

image-20210907162205510

服务器发回带有 Set-cookie 标头字段的响应。

cookie 包含会话 ID

image-20210907162427768

浏览器会根据cookie协议发回cookie,从而发送会话ID

image-20210907162520441

GET Requests(GET请求)

会话 ID 也可以通过 GET 请求传输。

http://example.site/resource.php?sessid=k27rds7h8