前端也需要了解的 JSONP 安全

这篇具有很好参考价值的文章主要介绍了前端也需要了解的 JSONP 安全。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

什么是 JSONP(JSON with Padding)?

What? 你还不知道 JSONP 是什么?赶紧去补补吧,我就不多讲了。 补个百度百科链接先,baike.baidu.com/item/jsonp/…

会有哪些安全隐患?怎么防范?

我们假设有这样一个场景一我登录了 www.qq.com,QQ 为了给第三方提供服务,可能会有这样的 jsonp 接口,www.qq.com/getUserInfo?callback=action,那我就可以自己构造一个恶意页面,请求这个 jsonp 接口,放在网络上,收集 qq 用户的信息了。要是 jsonp 接口还涉及了一些敏感操作或者信息,就更嗨皮了~比如登陆啊,删除啊等操作。不过国内很多后端开发并不重视此问题,突然想起来老东家的后端开发为了加速开发,写了个通用的函数,只要能 GET 访问的接口都可以 jsonp 访问。Emmm…

对于第一种情况,首先要验证 JSONP 调用的来源(Referer),这种方案利用了 js 资源加载时会发送 Referer 的特性,服务端判断 Referer 是不是白名单即可。说起来容易,但实际还会因为过滤的正则不严谨导致绕过,比如只验证了是否存在 www.qq.com 关键字,那我可以构造 www.qq.com.domain.com 来进行攻击。又比如很多开发会允许空 Referer,而跨协议调用 js 是不发送 Referer 的,可谓是千里之堤溃于蚁穴~跨协议调用 js 的一个例子: <iframe src="javascript:'<script src=http://attack.com/jsonp></script>'"></iframe> 代码里使用 iframe 调用 javascript 伪协议,来发送空 Referer 的 js 请求。所以空 Referer 还是要禁止滴。另外就是部署随机 Token 来防御了,每一次请求都带上 token 值,token 值字母加数字长一点最好了,不然有被暴力破解的可能。

接下来是场景二不严谨的 content-type 导致的 XSS 漏洞 想象一下 jsonp 就是你请求 http://youdomain.com?callback=douniwan, 然后返回 douniwan({ data }),那假如请求 http://youdomain.com?callback=<script>alert(1)</script> 不就返回 <script>alert(1)</script>({ data }) 了吗,如果没有严格定义好 Content-Type( Content-Type: application/json ),再加上没有过滤 callback 参数,直接当 html 解析了,就是一个赤裸裸的 XSS 了。 Content-Type 设置成 application/javascript 在 IE 等浏览器下一样可以解析成 HTML 导致 XSS 漏洞。所以要严格定义成 application/json。不过即使这样,在五花八门的浏览器面前,也会有个别特殊的,比如在 IE6/7 下面,请求的 URL 文件后面加一个 /x.html 就可以解析成 html。

防御这种情况首先要严格定义 Content-Type: application/json,然后严格过滤 callback 后的参数并且限制长度。有时候我们会在某些框架的内置 jsonp 函数返回内容里看到这样的开头:/**/, 比如 Express 框架内置的 jsonp 函数会这样返回:

/**/ typeof func === 'function' && func({"data":"hello"}); 

这是为什么呢?其实这都是有历史原因的,2011 年的时候出过一个通过 mhtml 协议解析跨域的漏洞:MHTML Mime-Formatted Request Vulnerability (CVE-2011-0096),当时也是影响了一堆国际厂商,想详细了解的可以戳这里,technet.microsoft.com/library/sec…防御这个就是在前面加上 /**/ 或者多个换行符就能一定程度预防其他文件格式的输出了。

接下来是场景三假如我的网站用了第三方的服务,而对方提供的只有 jsonp 接口,万一对方的服务器被黑了,返回了一串恶意代码,那不是城门失火,殃及池鱼了吗?请记住一句话,所有的第三方都是不可完全信任的。防御的话,首先,考虑一下,前端能做什么防御措施?iframe?好像可以,搜了下,网上已经有人做了尝试了,详细可以看这里 github.com/aui/jsonp-s…还有什么方法呢?前端好像没什么可以检测返回的 js 内容的函数了,好像没什么可以玩的了。那换个思路,服务端转发呢,既然前端不能检测第三方的 jsonp 内容,那我用自己的服务端去检测第三方的 jsonp 内容是否合法,再返回结果不就行了。

最后

绕来绕去,总感觉用的不太爽,可能正是由于 jsonp 的种种缺陷,才一直没有被浏览器标准采纳吧。# 学习计划安排
前端也需要了解的 JSONP 安全,前端,安全
我一共划分了六个阶段,但并不是说你得学完全部才能上手工作,对于一些初级岗位,学到第三四个阶段就足矣~

这里我整合并且整理成了一份【282G】的网络安全从零基础入门到进阶资料包,需要的小伙伴可以扫描下方CSDN官方合作二维码免费领取哦,无偿分享!!!

如果你对网络安全入门感兴趣,那么你需要的话可以

点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

①网络安全学习路线
②上百份渗透测试电子书
③安全攻防357页笔记
④50份安全攻防面试指南
⑤安全红队渗透工具包
⑥HW护网行动经验总结
⑦100个漏洞实战案例
⑧安全大厂内部视频资源
⑨历年CTF夺旗赛题解析文章来源地址https://www.toymoban.com/news/detail-778645.html

前端也需要了解的 JSONP 安全,前端,安全

到了这里,关于前端也需要了解的 JSONP 安全的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 这些嵌入式系统安全性的知识你需要了解

    这可能是 工程师在面对 嵌入式系统应用 程序的安全性时可能提出的第一个问题。 不幸的是,有大量的“安全软件包”可用,并且对安全性不熟悉的 嵌入式工程师 可能只将安全性称为加密或病毒防护。尽管加密是安全性的一种工具,而病毒扫描程序从技术上讲可以提供安全

    2024年02月09日
    浏览(33)
  • 最需要了解的H3C交换机端口安全模式

    用户网络访问控制是我们在进行网络管理和网络设备配置时经常要用到一项网络技术应用。许多读者朋友往往遇到这类应用需求时无从下手,其实在用户的网络访问控制方面,最直接、最简单的方法就是配置基于端口的安全模式,不仅Cisco交换机如此,H3C交换机也有类似的功

    2024年02月05日
    浏览(33)
  • [前端原生技术]jsonp

    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://www.cnblogs.com/cnb-yuchen/p/18031965 出自【进步*于辰的博客】 在学习了Jsoup这个知识点之后,发觉js的这一特点真的很强大—— 动态解释 。 本文以实用性的角度对Jsonp进行阐述,故在有些方面不是很详

    2024年04月08日
    浏览(32)
  • 前端常见跨域解决方案(jsonp,cors,proxy,postMessage,webSocket)

    一、JSONP(jsonp) 概念: JSONP(JSON with Padding,填充式 JSON 或参数式 JSON)是一种通过 优点: 简单易用 兼容性好,支持各种浏览器 缺点: 只能实现 GET 请求,无法实现 POST 等其他类型的请求 安全性较低,容易受到 XSS 攻击 Eg: 为什么需要动态生成标签,而不是直接通过 原因有

    2024年02月07日
    浏览(35)
  • 在前端开发中需要考虑的常见web安全问题和攻击原理以及防范措施

    随着互联网的发展,Web应用程序越来越普及,但是Web安全问题也随之增加。前端开发者作为Web应用程序的构建者之一,需要了解和掌握Web安全的基本知识和解决方案。本文将介绍前端开发者必须知道的Web安全问题和防范措施。 一、XSS攻击 XSS攻击指的是跨站脚本攻击,是一种

    2024年01月20日
    浏览(35)
  • 【计算机网络】网络安全,HTTP协议,同源策略,cors,jsonp

    ❤️ Author: 老九 ☕️ 个人博客:老九的CSDN博客 🙏 个人名言:不可控之事 乐观面对 😍 系列专栏: 会生成一个公钥一个私钥,我现在有一个东西,我用公钥给它加密,公钥可以公开给任何一个人,只有对应的私钥可以解密;如果用对称加密最重要的坏处就是需要在网络上

    2024年02月07日
    浏览(41)
  • 怎么使用树莓派总要了解一点它的软硬件吧。什么模块有什么用,需要什么准备才能安全的看到树莓派的开机界面

    Raspberry Pi(中文名为“树莓派”,简写为 RPi,(或者 RasPi / RPI)只有信用卡大小的微型电脑, 其系统基于 Linux 。随着 Windows 10 IoT 的发布,我们 也将可以用上运行 Windows IoT 的树莓派 。别看其外表“娇小”,内“心”却很强大,视频、音频等功能通通皆有,可谓是“麻雀虽小,五

    2024年02月06日
    浏览(27)
  • [网络安全/前端XSS防护]一文带你了解HTML的特殊字符转义及编码

    在 HTML 中,有一些特殊字符不可直接使用,需要使用转义字符或实体编码来表示。这是为了避免这些字符与 HTML 标签和语法产生冲突。同时,也是为了防范前端XSS。 例如,有些特殊字符(如 和 )作为HTML标签的一部分,要是没有被特殊处理可能被恶意XSS。 HTML的特殊字符转义

    2024年02月06日
    浏览(47)
  • 【网络安全/前端XSS防护】一文带你了解HTML的特殊字符转义及编码

    在 HTML 中,有一些特殊字符不可直接使用,需要使用转义字符或实体编码来表示。这是为了避免这些字符与 HTML 标签和语法产生冲突。同时,也是为了防范前端XSS。 例如,有些特殊字符(如 和 )作为HTML标签的一部分,要是没有被特殊处理可能被恶意XSS。 HTML的特殊字符转义

    2024年02月04日
    浏览(35)
  • JSONP的安全性较差,那么在跨域情况下,有没有其他更安全的替代方案呢?

    在跨域情况下,为了保证安全性,有几种更安全的替代方案可以考虑使用: 1:CORS(Cross-Origin Resource Sharing): CORS 是一种现代化的跨域解决方案,通过在服务器端设置响应头来控制跨域访问。 服务器可以配置允许跨域请求的来源(域名)、请求方法和头部信息等,以确保仅

    2024年02月03日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包