第三方软件测试:Cookie测试_Cookie存储安全吗

17 小时前  卓码软件测评 

第三方软件测试对 Cookie 存储安全的评估是一个系统性的过程,它远不止于简单的存在性检查,而是深入找出在整个应用生命周期中的设置、传输、存储及使用环节是否存在可被利用的安全弱点。在于验证 Cookie 是否遵循了“最小权限”和“纵深防御”的安全原则。

一、测试评估模型
第三方测试机构(如卓码软件测评)会依据 OWASP Testing Guide、PCI DSS 等相关安全标准,构建一个多维评估模型:
机密性:Cookie 内容是否包含敏感信息?是否被过度暴露?
完整性:Cookie 是否可能被客户端篡改?
访问控制 :谁可以访问(读/写)Cookie?
生命周期 :Cookie 的创建、失效和销毁策略是否安全?

二、测试内容方法

  1. 敏感信息泄露测试
    测试目标:检测 Cookie 中是否明文存储用户凭证、个人身份信息(PII)、授权令牌或其他业务敏感数据。
    测试方法:
    使用浏览器开发者工具或代理工具(Burp Suite, OWASP ZAP)检查每个 Set-Cookie 响应头和 Cookie 请求头。
    对 Cookie 值进行解码(URL Decode, Base64 Decode)或解密(如果应用自行实现了加密机制),分析其原始内容。
    安全要求:Cookie 不应成为敏感信息的存储介质。会话标识符应为随机、不可预测的令牌,且无法映射到真实用户身份。

  2. 安全属性配置测试
    这是评估的重中之重,测试每个 Cookie 的以下属性:
    HttpOnly:
    测试:检查是否设置。尝试通过注入的 XSS PoC 脚本执行 document.cookie 访问,验证其是否被成功阻止。
    要求:所有用于身份认证的会话 Cookie 必须启用此属性,以有效缓解 XSS 攻击后的凭证窃取。

Secure:
测试:检查是否设置。在 HTTP 页面上发起请求,观察浏览器是否仍在请求头中发送该 Cookie。使用代理工具拦截 HTTPS 响应,尝试移除 Secure 属性后返回给客户端,看其是否在后续 HTTP 请求中被发送。
要求:所有在 HTTPS 站点下使用的 Cookie 必须启用此属性,防止在明文传输中被窃听。

SameSite:
测试:检查取值(Strict, Lax, None)。构建跨站请求(如在其他域的页面中通过表单或 fetch API 发起请求),验证 Cookie 的发送行为是否符合预期。
None:必须与 Secure 属性共存。
Lax:对 GET 请求的顶级导航应发送。
Strict:任何跨站上下文均不发送。
要求:用于会话管理的 Cookie 推荐设置为 Lax 或 Strict,以提供对 CSRF 攻击的深度防御。

Path:
测试:检查 Path 属性值是否被过于宽泛地设置为 /。验证路径限制是否有效:为一个路径 /admin 设置的 Cookie,不应在访问 /public 路径时被发送。
要求:应遵循最小权限原则,将 Path 设置为应用所需的最严格路径,限制 Cookie 的作用域。

Domain:
测试:检查 Domain 属性是否被不必要地放宽(如设置为 .example.com),导致其可被所有子域访问。
要求:除非有明确的跨子域共享需求,否则应避免设置 Domain 属性,让 Cookie 默认仅对当前域有效。

3..生命周期管理测试
持久性 Cookie vs 会话 Cookie:
测试:检查 Expires 和 Max-Age 属性。验证持久性 Cookie 的过期时间是否被设置得过长。
要求:会话 Cookie(非持久化)更安全。若使用持久化 Cookie,其有效期应在安全需求和用户体验间取得平衡,并且提供明确的注销功能以服务端销毁会话。
会话注销测试:
测试:用户点击“退出登录”后,检查服务端是否不仅使会话失效,同时还在响应中发送了一个设置相同 Cookie 名、空值、且立即过期(Expires=Thu, 01 Jan 1970 00:00:00 GMT)的 Set-Cookie 头,指令客户端删除该 Cookie。

4.签名与加密机制测试
测试:对于自编码的 Cookie 值,分析其是否容易被篡改。测试者尝试修改 Cookie 值(如 userid=1001 改为 userid=1000)并观察应用行为。检查应用是否使用了强算法(如 HMAC-SHA256)对 Cookie 进行签名,或使用 AES-GCM 等进行加密。
要求:任何需要在客户端存储、且对篡改敏感的数据,必须经过服务器签名或加密验证,否则应被视为不可信。

/24 人阅读/0 条评论 发表评论

登录 后发表评论