首页 > 解决方案 > CSRF 令牌是否足以防止 XSSI 攻击?

问题描述

我在 Google Gruyere页面中阅读了有关XSSI 攻击预防的信息。

Gruyere提出的三个防止XSSI 攻击的主要建议:

  1. 首先,使用前面讨论的 XSRF 令牌来确保包含机密数据的 JSON 结果只返回到您自己的页面。
  2. 其次,您的 JSON 响应页面应该只支持 POST 请求,这会阻止脚本通过脚本标签加载。
  3. 第三,您应该确保该脚本不可执行。执行此操作的标准方法是为其附加一些不可执行的前缀,例如 ])}while(1);

附加两个:

  1. 有一种称为 JSONP 的 JSON 变体,您应该避免使用它,因为它允许通过设计进行脚本注入。
  2. 还有 E4X (Ecmascript for XML) 可以导致你的 HTML 文件被解析为脚本。令人惊讶的是,防止 E4X 攻击的一种方法是在您的文件中放入一些无效的 XML,就像上面一样。

观看了演示文稿:视频幻灯片

CSRF 令牌是否足以防止 XSSI 攻击?

无需在响应中附加不可执行的前缀(例如 Facebook 使用for(;;)或 Google - )]}',\n)。

如果没有,当 CSRF 令牌到位时如何执行 XSSI 攻击?

标签: securitycsrfcross-site

解决方案


在以下情况下您会关心这种攻击:
1. 您的站点使用 dynamicJS。
2.这些页面包含个人数据或秘密令牌(csrf-token)。

如果是这样,请使用以下最佳实践:
1. 保留静态脚本和内容,与用户数据分开。
2. 对 JSON 使用严格的 POST 方法。(可以绕过)。
3. 在响应前使用 CRSF 令牌进行验证。

所以 CSRF 令牌足以保证安全,但安全建议包括所有最佳实践。

谢谢,
杰基


推荐阅读