我已阅读Google Gruyere page中关于XSSI攻击的预防措施。
从Gruyere到prevent XSSI攻击的三个主要建议:
- [首先,使用前面讨论的XSRF令牌,确保仅将包含机密数据的JSON结果返回给您自己的页面。
- 第二,您的JSON响应页面应仅支持POST请求,这将阻止通过脚本加载脚本标签。
- 第三,您应确保脚本不可执行。执行此操作的标准方法是将一些不可执行的前缀附加到就像])} while(1);
附加二:
- 有一种称为JSONP的JSON变体,应避免使用它,因为它允许按设计注入脚本。
- 还有E4X(XML的Ecmascript),它可能导致您的HTML文件被解析为脚本。令人惊讶的是,一种保护方式针对E4X攻击的方法是在文件中放入一些无效的XML,例如以上。
不向响应添加不可执行的前缀(例如,Facebook对for(;;;)或Google-)]}',\ n进行操作)。
您在以下情况下会注意此攻击:1.您的站点使用dynamicJS。2.这些页面包含个人数据或秘密令牌(csrf令牌)。
如果是这样,请遵循以下最佳做法:1.保留静态脚本和内容,并与用户数据分开。2.对JSON使用严格的POST方法。 (可以绕过)。3.使用CRSF令牌在响应之前进行验证。
所以CSRF令牌足以确保安全,但是安全建议包括所有最佳实践。
谢谢,Jaikey