最后更新于
最后更新于
更深入的细节请查看。
本文讨论的技术涉及理解两种主要缓存类型的行为和交互:后退/前进缓存(bfcache)和磁盘缓存。bfcache存储页面的完整快照,包括JavaScript堆,优先于磁盘缓存用于后退/前进导航,因为它能够存储更全面的快照。相比之下,磁盘缓存存储从网络获取的资源,不包括JavaScript堆,并用于后退/前进导航以减少通信成本。磁盘缓存的一个有趣方面是它包含使用fetch
获取的资源,这意味着浏览器将从缓存中渲染访问的URL资源。
bfcache在后退/前进导航中优先于磁盘缓存。
要使用存储在磁盘缓存中的页面而不是bfcache,必须禁用后者。
默认情况下,Puppeteer禁用bfcache,符合Chromium文档中列出的条件。禁用bfcache的一种有效方法是通过使用RelatedActiveContentsExist
,通过使用window.open()
打开一个保留对window.opener
引用的页面。
访问一个网页,例如https://example.com
。
执行open("http://spanote.seccon.games:3000/api/token")
,将导致服务器响应返回500状态码。
在新打开的选项卡中,导航到http://spanote.seccon.games:3000/
。此操作将将http://spanote.seccon.games:3000/api/token
的响应缓存为磁盘缓存。
使用history.back()
进行后退导航。此操作将导致在页面上呈现缓存的JSON响应。
可以通过在Google Chrome的DevTools中确认磁盘缓存是否被使用来验证。
有关bfcache和磁盘缓存的更多详细信息,请参考和。
您在网络安全公司工作吗? 想要在HackTricks中看到您的公司广告吗? 或者想要访问PEASS的最新版本或下载HackTricks的PDF吗? 请查看!
探索,我们独家的收藏品
获取
加入 或 或在Twitter上关注我 🐦。
通过向 和 提交PR来分享您的黑客技巧。