security - CSRF 令牌是否足以防止 XSSI 攻击?
问题描述
我在 Google Gruyere页面中阅读了有关XSSI 攻击预防的信息。
Gruyere提出的三个防止XSSI 攻击的主要建议:
- 首先,使用前面讨论的 XSRF 令牌来确保包含机密数据的 JSON 结果只返回到您自己的页面。
- 其次,您的 JSON 响应页面应该只支持 POST 请求,这会阻止脚本通过脚本标签加载。
- 第三,您应该确保该脚本不可执行。执行此操作的标准方法是为其附加一些不可执行的前缀,例如 ])}while(1);
附加两个:
- 有一种称为 JSONP 的 JSON 变体,您应该避免使用它,因为它允许通过设计进行脚本注入。
- 还有 E4X (Ecmascript for XML) 可以导致你的 HTML 文件被解析为脚本。令人惊讶的是,防止 E4X 攻击的一种方法是在您的文件中放入一些无效的 XML,就像上面一样。
CSRF 令牌是否足以防止 XSSI 攻击?
无需在响应中附加不可执行的前缀(例如 Facebook 使用for(;;)或 Google - )]}',\n)。
如果没有,当 CSRF 令牌到位时如何执行 XSSI 攻击?
解决方案
在以下情况下您会关心这种攻击:
1. 您的站点使用 dynamicJS。
2.这些页面包含个人数据或秘密令牌(csrf-token)。
如果是这样,请使用以下最佳实践:
1. 保留静态脚本和内容,与用户数据分开。
2. 对 JSON 使用严格的 POST 方法。(可以绕过)。
3. 在响应前使用 CRSF 令牌进行验证。
所以 CSRF 令牌足以保证安全,但安全建议包括所有最佳实践。
谢谢,
杰基
推荐阅读
- python - 在python中,找到唯一的键值对或具有相似键的唯一值
- java - 如何检查矩形棱柱是否完全嵌套在另一个棱柱中,包括旋转
- api - 从 Delphi 访问 TRAKT API - Bearer 身份验证问题 [已解决]
- vb.net - Label1.text 和 Label1.backcolor 不会改变任何东西
- plc - 如何制作基于不同输入计算时间的宏
- algorithm - 查找所有代表限制为 1 和 0 的 N 位二进制数
- java - 如何从 firebase 永久重新排序 recyclerview?
- python - 如何将flappy bird游戏的分数存储到sql数据库中
- excel - 具有多个条件的 Excel SUMPRODUCT
- php - 使用所选自动完成的 ajax 方法