在 JSON 响应中包含魔术前缀如何防止 XSSI 攻击?

信息安全 api json 西西
2021-08-11 21:26:04

在处理一个使用 REST API 进行 Gerrit 代码审查的项目时,我注意到他们做了一些我认为很奇怪的事情来源

为了防止跨站点脚本包含 (XSSI) 攻击,JSON 响应正文以魔术前缀行开头,在将响应正文的其余部分提供给 JSON 解析器之前必须删除该前缀行:

)]}'
[ ... valid JSON ... ]

在响应正文前加上看似随机的字符如何防止 XSSI?

1个回答

XSSI 通过尝试将 JSON 响应评估为 Javascript 来工作,并且该序列)]}'通过可靠地产生语法错误来防止这种情况。

针对不需要的脚本包含提出了不同的建议对策,但是放置一个无限循环(我已经for(;;)在 Facebook API 中看到过)或产生语法错误(某些 Google API)]}'在您的示例中使用)已证明足够合理并且向后兼容. 这篇文章有一些额外的例子。

如果您不确定为什么 XSSI 首先是一种威胁并且违反了同源策略,请在此处阅读