【发布时间】:2014-01-24 04:15:11
【问题描述】:
为什么浏览器允许跨域 JSONP 请求而不允许 JSON 请求?我知道不允许使用 JSON 请求来防止 XSS,但我不明白 JSONP 比 JSON 更安全。
事实上,JSONP 会不会更危险,因为它在技术上是一个脚本,而 JSON 只是一个文本字符串?
【问题讨论】:
标签: ajax json browser cross-domain jsonp
为什么浏览器允许跨域 JSONP 请求而不允许 JSON 请求?我知道不允许使用 JSON 请求来防止 XSS,但我不明白 JSONP 比 JSON 更安全。
事实上,JSONP 会不会更危险,因为它在技术上是一个脚本,而 JSON 只是一个文本字符串?
【问题讨论】:
标签: ajax json browser cross-domain jsonp
JSONP 并不安全。这是一种绕过同源策略的变通方法/漏洞/黑客。
CORS 是 JSONP 的更安全替代方案。
【讨论】:
<script> 标记,其 src 属性引用任意域,因为没有区别。浏览器“允许”JSONP 与“允许”外部脚本一样多。
由于跨域 JSON 被拦截,敏感数据可以使用 JSON 传输,而不是 JSONP。这可以防止 XSS。此外,服务器不应使用 JSONP 发送敏感数据。因此,使用 JSON 发送数据可以防止未经授权的观察。从这个意义上说,JSON 更安全。
【讨论】: