Jsonp 是什么

Fanly 2019-06-10 10:52:52
问答

JSONP是数据格式JSON的一种“使用模式”,可以让网页从别的网域要数据,利用script元素开放策略,网页可以从其他来源动态产生的JSON数据,而这种使用模式就是所谓的 JSONP。

JSONP 是数据格式 JSON 的一种“使用模式”,可以让网页从别的网域要数据。另一个解决这个问题的新方法是跨来源资源共享。利用 script 元素的这个开放策略,网页可以得到从其他来源动态产生的 JSON 数据,而这种使用模式就是所谓的 JSONP。用 JSONP 抓到的数据并不是 JSON,而是任意的 JavaScript,用 JavaScript 解释器运行而不是用 JSON 解析器解析。

Jsonp

为了要引导一个 JSONP 调用(或者说,使用这个模式),你需要一个 script 元素。因此,浏览器必须为每一个 JSONP 要求加(或是重用)一个新的、有所需 src 值的 script 元素到 HTML DOM 里—或者说是“注入”这个元素。浏览器运行该元素,抓取 src 里的 URL,并运行回传的 JavaScript。

也因为这样,JSONP 被称作是一种“让用户利用 script 元素注入的方式绕开同源策略”的方法。

安全问题

使用远程网站的 script 标签会让远程网站得以注入任何的内容至网站里。如果远程的网站有 JavaScript 注入漏洞,原来的网站也会受到影响。

现在有一个正在进行项目在定义所谓的 JSON-P 严格安全子集,使浏览器可以对 MIME 类别是“application/json-p”请求做强制处理。如果回应不能被解析为严格的 JSON-P,浏览器可以丢出一个错误或忽略整个回应。

跨站请求伪造

粗略的 JSONP 部署很容易受到跨站请求伪造(CSRF/XSRF)的攻击。因为 HTML script 标签在浏览器里不遵守同源策略,恶意网页可以要求并获取属于其他网站的 JSON 数据。当用户正登录那个其他网站时,上述状况使得该恶意网站得以在恶意网站的环境下操作该 JSON 数据,可能泄漏用户的密码或是其他敏感数据。

只有在该 JSON 数据含有不该泄漏给第三方的隐密数据,且服务器仅靠浏览器的同源策略阻挡不正常要求的时候这才会是问题。若服务器自己决定要求的专有性,并只在要求正常的情况下输出数据则没有问题。只靠 Cookie 并不够决定要求是合法的,这很容易受到跨站请求伪造攻击。

0个人收藏 收藏

评论交流

泪雪默认头像 请「登录」后参与评论
  1. 加载中..

相关推荐

  • JWT JSON Web Token

    JWT是什么

    JWT(JSON Web Token)是一种用于网络身份验证和授权的标准工具,由头部、载荷和签名三部分组成。它轻量、安全、可扩展,通过签名确保信息完整性,无需服务器存储,适用于分布式系统和跨域应用。尽管具备众多优点,但需小心保管密钥,避免存储敏感信息,以确保安全使用。
  • Nginx JavaScript Nginx njs

    Nginx njs是什么

    Nginx njs是一个轻量级的JavaScript解释器,专门为Nginx设计。它允许开发者在Nginx配置中使用JavaScript语言来实现复杂的业务逻辑。njs的出现是为了解决原生Nginx配置难以满足的复杂需求。与Node.js不同,njs专注于Nginx的扩展,性能开销小,API与Nginx紧密集成。
  • CORS 错误 跨域资源共享

    CORS错误是什么

    CORS(跨域资源共享)错误是互联网安全中的常见问题,出现在跨域请求时,可能导致数据泄露或无法正常加载资源。解决CORS错误的方法包括服务器端配置CORS策略、使用代理、JSONP等客户端解决方案,以及通过浏览器控制台和跨域请求工具进行调试。
  • Vue 框架 Vue framework

    Vue框架的优点是什么

    vue框架的优点是简单易学;灵活高效;双向数据绑定,通过MVVM思想实现数据的双向绑定,让数据操作更简单;组件化开发,Vue.js通过组件,把一个单页应用中的各种模块拆分到单独的组件中,实现了html的封装和重用;极大解放DOM。操作。
  • uni app

    uni app是什么

    uni app是一个使用Vue.js开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)、快应用等多个平台。
  • JSON-LD

    JSON-LD是什么

    JSON-LD 是一种轻量级的关联数据格式。基于已经成功的 JSON 格式,并提供了一种帮助 JSON 数据在 Web 规模上互操作的方法。JSON-LD 是编程环境、REST Web服务和非结构化数据库的理想数据格式。