“像Facebook这样的网站使用动态更改的名称加载javascript文件,这会阻止它先前缓存JavaScript文件,因此无法完成此攻击。”
您可以详细了解此攻击向量here。
使用更改名称加载JS文件可以降低缓存中毒的风险 - 因为第三方无法预测拦截哪些JS文件。
如果您知道如何在页面加载时动态更改JS文件的名称,或者可以链接到相关信息,我会很感激。这些知识对任何人都有价值。
答案 0 :(得分:1)
为每个用户生成唯一的脚本密钥。 (将密钥存储在用户表中,或者只使用密钥哈希)
更改<script>
标记以引用包含密钥和脚本名称的特殊服务器端处理程序。 (您可以使用路由引擎使URL更漂亮。
在服务器端代码中,检查密钥是否与当前登录的用户匹配 如果密钥不存在或不匹配,则返回404.(并记录安全审查请求)
这不适用于CDN或静态内容域。