目录

  1. ASP Cookies 简介
  2. 创建 Cookies
  3. 读取 Cookies
  4. 修改 Cookies
  5. 删除 Cookies
  6. 设置 Cookies 过期时间
  7. 使用 Cookies 存储多值数据
  8. Cookies 安全性和限制
  9. 总结
  10. 参考资料

1. ASP Cookies 简介

Cookies 是存储在客户端浏览器的小型文本数据,ASP 允许服务器创建和管理 Cookies,以便在多个页面之间存储和共享用户信息。

Cookies 适用场景:

  • 记录用户的登录状态
  • 记住用户偏好设置
  • 购物车功能
  • 追踪用户行为(如访问计数)

Cookies 特点:

  • 由 服务器发送 并存储在 客户端 设备上
  • 服务器可以在 后续请求中 读取 Cookies
  • 每个 Cookie 默认会在 会话结束时删除(除非设置过期时间)

2. 创建 Cookies

在 ASP 中,使用 Response.Cookies 创建 Cookies。

示例:创建一个简单的 Cookie

<%
Response.Cookies("username") = "Alice"
Response.Write "Cookie 'username' 已设置!"
%>

说明:

  • Response.Cookies("username") = "Alice":创建一个名为 username 的 Cookie,并设置值为 "Alice"

3. 读取 Cookies

使用 Request.Cookies("cookie名") 读取 Cookie 的值。

示例:读取 Cookie

<%
Dim username
username = Request.Cookies("username")

If username <> "" Then
    Response.Write "欢迎回来, " & username & "!"
Else
    Response.Write "尚未设置 Cookie。"
End If
%>

说明:

  • Request.Cookies("username") 获取 username 的值,如果不存在,则返回空字符串 ""

4. 修改 Cookies

直接重新赋值即可修改 Cookies。

示例:修改 Cookie 值

<%
Response.Cookies("username") = "Bob"
Response.Write "Cookie 'username' 已更新为 Bob!"
%>


5. 删除 Cookies

将 Cookie 过期时间设为过去即可删除 Cookie。

示例:删除 Cookie

<%
Response.Cookies("username") = ""
Response.Cookies("username").Expires = Now - 1
Response.Write "Cookie 'username' 已删除!"
%>

说明:

  • Response.Cookies("username").Expires = Now - 1 让 Cookie 立即过期,从而删除它。

6. 设置 Cookies 过期时间

默认情况下,Cookie 仅在浏览器关闭前有效。可以使用 Expires 属性设置 Cookie 过期时间。

示例:设置 Cookie 7 天后过期

<%
Response.Cookies("username") = "Alice"
Response.Cookies("username").Expires = DateAdd("d", 7, Now)
Response.Write "Cookie 'username' 将在 7 天后过期!"
%>

说明:

  • DateAdd("d", 7, Now):当前时间 Now 加 7 天,即 Cookie 7 天后过期。

7. 使用 Cookies 存储多值数据

ASP 支持子键(Subkey),可以在单个 Cookie 里存储多个值。

示例:存储多值 Cookie

<%
Response.Cookies("user")("name") = "Alice"
Response.Cookies("user")("email") = "alice@example.com"
Response.Write "Cookie 'user' 已设置!"
%>

示例:读取多值 Cookie

<%
Dim name, email
name = Request.Cookies("user")("name")
email = Request.Cookies("user")("email")

Response.Write "用户名: " & name & "<br>"
Response.Write "邮箱: " & email
%>

说明:

  • Request.Cookies("user")("name") 读取 user Cookie 下的 name 值。
  • Request.Cookies("user")("email") 读取 user Cookie 下的 email 值。

8. Cookies 安全性和限制

8.1 限制 Cookie 的作用域

可以使用 Domain 和 Path 限制 Cookie 适用范围。

Response.Cookies("username") = "Alice"
Response.Cookies("username").Domain = ".example.com"
Response.Cookies("username").Path = "/admin"

  • .Domain = ".example.com":Cookie 适用于 example.com 及其子域名(如 sub.example.com)。
  • .Path = "/admin":Cookie 仅在 /admin 目录下有效。

8.2 Cookie 限制

  • 最大大小:每个 Cookie 4KB,单个域名最多存储 20 个 Cookie
  • 不适用于敏感信息:Cookie 存储在客户端,避免存储密码、银行信息等敏感数据
  • 防止跨站脚本攻击(XSS):不信任用户输入,避免通过 document.cookie 获取 Cookie。

8.3 仅限服务器读取的 Cookie(HTTPOnly)

为了防止 JavaScript 读取 Cookie,可以设置 HttpOnly。但在传统 ASP 中不直接支持 HttpOnly,可通过 HTTP 头部实现:

Response.AddHeader "Set-Cookie", "username=Alice; HttpOnly"

这样,JavaScript 不能通过 document.cookie 访问 Cookie,减少 XSS 攻击风险。


9. 总结

操作代码示例
创建 CookieResponse.Cookies("username") = "Alice"
读取 CookieRequest.Cookies("username")
修改 CookieResponse.Cookies("username") = "Bob"
删除 CookieResponse.Cookies("username").Expires = Now - 1
设置过期时间Response.Cookies("username").Expires = DateAdd("d", 7, Now)
存储多值 CookieResponse.Cookies("user")("name") = "Alice"
读取多值 CookieRequest.Cookies("user")("name")

ASP 的 Cookie 机制为 Web 应用提供了持久性数据存储,但在使用时需要注意大小限制、安全性和作用域控制,以确保数据的安全性和可靠性。


10. 参考资料

  1. W3Schools – ASP Cookies
  2. Microsoft ASP 文档
  3. OWASP – Cookie 安全