【发布时间】:2016-10-18 05:12:09
【问题描述】:
一些网络服务器在 JSON 响应前添加 while(1);,例如。 G。 while(1);['id',123]。
这是为了防止JSON hijacking:
这是为了确保其他一些网站不会做出令人讨厌的伎俩来尝试 窃取您的数据。例如,通过替换数组构造函数,则 通过标记包含此 JSON URL,恶意第三方 站点可以从 JSON 响应中窃取数据。通过放一个 而(1);一开始,脚本将挂起。 @bdonlan,https://stackoverflow.com/a/871508/1647737
但是,这种将 JSON 内容“误用”为 <script> 源的情况只有在网络浏览器(例如 Firefox)执行内容类型为 application/json 的脚本时才有可能:
<!-- Content-type: application/json; charset=ISO-8859-1 -->
<script src="http://code.jsontest.com/?mine=1"></script>
浏览器不能简单地忽略内容类型不匹配的远程脚本吗?例如。在上面的示例中,script type 将是 application/javascript(默认情况下),但响应的内容类型为 application/json。为什么它仍然作为 JavaScript 执行?
【问题讨论】:
标签: javascript json security content-type