4.4.6-测试浏览器缓存弱点

测试浏览器缓存弱点

ID
WSTG-ATHN-06

总结

在此阶段,测试人员会检查应用程序是否正确指示浏览器不保留敏感数据。

浏览器可以存储用于缓存和历史记录的信息。缓存用于提高性能,因此以前显示的信息无需再次下载。为了方便用户,使用历史记录机制,以便用户可以准确地看到他们在检索资源时看到的内容。如果向用户显示敏感信息(例如他们的地址、信用卡详细信息、社会安全号码或用户名),则可以存储此信息以用于缓存或历史记录,因此可以通过检查浏览器的缓存或只需按浏览器的返回按钮即可检索。

测试目标

  • 查看应用程序是否在客户端存储敏感信息。
  • 查看是否可以在未经授权的情况下进行访问。

如何测试

浏览器历史记录

从技术上讲,返回按钮是历史记录,而不是缓存(请参阅 HTTP 中的缓存:历史记录列表)。缓存和历史记录是两个不同的实体。但是,它们具有相同的弱点,即呈现以前显示的敏感信息。

第一个也是最简单的测试包括将敏感信息输入到应用程序中并注销。然后,测试人员单击浏览器的返回按钮,以检查是否可以在未经身份验证的情况下访问以前显示的敏感信息。

如果通过按下返回按钮,测试人员可以访问以前的页面,但不能访问新页面,那么这不是身份验证问题,而是浏览器历史记录问题。如果这些页面包含敏感数据,则表示应用程序没有禁止浏览器存储它。

身份验证不一定需要参与测试。例如,当用户输入其电子邮件地址以注册时事通讯时,如果处理不当,则可以检索此信息。

可以阻止返回按钮显示敏感数据。这可以通过以下方式完成:

  • 通过 HTTPS 传送页面。
  • 设置Cache-Control: must-revalidate

浏览器缓存

在这里,测试人员会检查应用程序是否将任何敏感数据泄漏到浏览器缓存中。为了做到这一点,他们可以使用代理(如ZAP)并搜索属于会话的服务器响应,检查服务器是否指示浏览器不要缓存任何数据,其中包含敏感信息的每个页面。可以使用以下指令在 HTTP 响应标头中发出此类指令:

  • Cache-Control: no-cache, no-store
  • Expires: 0
  • Pragma: no-cache

这些指令通常是可靠的,尽管可能需要为Cache-Control 标头添加其他标志,以便更好地防止文件系统上永久链接的文件。这些包括

  • Cache-Control: must-revalidate, max-age=0, s-maxage=0
HTTP/1.1:
Cache-Control: no-cache
HTTP/1.0:
Pragma: no-cache
Expires: "past date or illegal value (e.g., 0)"

例如,如果测试人员正在测试电子商务应用程序,他们应该查找包含信用卡号或其他一些财务信息的所有页面,并检查所有这些页面是否都执行no-cache指令。如果他们发现包含关键信息但未能指示浏览器不要缓存其内容的页面,他们知道敏感信息将存储在磁盘上,他们只需在浏览器缓存中查找页面即可仔细检查这一点。

存储该信息的确切位置取决于客户端操作系统和所使用的浏览器。以下是一些示例:

  • Mozilla Firefox:
    • Unix/Linux: ~/.cache/mozilla/firefox/
    • Windows: C:\Users\<user_name>\AppData\Local\Mozilla\Firefox\Profiles\<profile-id>\Cache2\
  • Internet Explorer:
    • C:\Users\<user_name>\AppData\Local\Microsoft\Windows\INetCache\
  • Chrome:
    • Windows: C:\Users\<user_name>\AppData\Local\Google\Chrome\User Data\Default\Cache
    • Unix/Linux: ~/.cache/google-chrome
查看缓存信息

Firefox 提供了查看缓存信息的功能,这可能对您作为测试人员有益。当然,该行业还制作了各种扩展程序和外部应用程序,您可能更喜欢或需要 Chrome、Internet Explorer 或 Edge。

缓存详细信息也可通过大多数现代浏览器(如 FirefoxChrome , 和 Edge)中的开发人员工具获得。使用Firefox,也可以使用about:cache 来检查URL缓存详细信息。

检查移动浏览器的处理

对于移动浏览器,缓存指令的处理可能完全不同。因此,测试人员应该使用干净的缓存开始新的浏览会话,并利用 Chrome 的设备模式 或 Firefox 的响应式设计模式等功能来重新测试或单独测试上述概念。

此外,ZAP 和 Burp Suite 等个人代理允许User-Agent 指定他们的蜘蛛/爬虫应该发送哪些代理。这可以设置为与移动浏览器 User-Agent 字符串匹配,并用于查看正在测试的应用程序发送的缓存指令。

灰盒测试

测试方法等同于黑盒情况,因为在这两种情况下,测试人员都可以完全访问服务器响应标头和 HTML 代码。但是,通过灰盒测试,测试人员可能有权访问帐户凭据,从而允许他们测试只有经过身份验证的用户才能访问的敏感页面。

Tools

引用

白皮书

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值