JSON劫持与while(1)

2024-04-26 05:04
文章标签 json 劫持

本文主要是介绍JSON劫持与while(1),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、背景与介绍

        JSON 劫持,也称为“JavaScript 对象表示不法劫持”。当应用程序没有适当地防范此类攻击时,此漏洞允许攻击者从受害者的浏览器中窃取敏感数据。 JSON 劫持利用同源策略,这是一种安全措施,可防止网页向与提供网页的域不同的域发出请求。

        这是通过查询资料找到关于什么"JSON劫持"的解释.

        这个JSON劫持一般发生与JSONP、CSRF跨站伪造请求有点异曲同工之处。我们都知道CSRF攻击,本质还是利用了浏览器针对站点颁发的Cookie,如果客户端浏览器有这个站点的Cookie,那么每次请求这个站点的HTTP请求,都会携带上Cookie.  

        那么经典的CSRF攻击场景是怎么样的呢?

        1、某黑客利用当前比较热门的话题,例如xx视频观看,某某文章爆料,或者具备诱惑的内容,制作了一个调用网址页面,引诱你点他的链接

        2、之后,黑客在他的页面内容写了一些恶意JS代码或者html标签,例如淘宝taobao.com大家用得比较多,有一些活动,例如这个GET请求,就是给黑客的账号充钱/充积分. 假设链接地址是https://www.taobao.com/activity?id=101&user_id=100,  101是活动id, user_id=100, 只要你登录了taobao.com,并且访问这个链接,那就代表你给这个user_id=100充钱或者默认赠送你账号上的积分之类的。  (这里只是举例子,taobao也不是吃干饭的,不会这么沙雕)

        假设user_id=100正是这个黑客的账号。 那么当你进到黑客网页, 黑客网页有一个img标签或者script标签,指向这个URL地址, 那么你的浏览器会自动访问这个URL, 并且携带了你的淘宝Cookie, OK, 你有可能就被悄无声息的转账或者转积分给黑客了。  

        画个图大家理解下原理:

二、JSONP劫持

1、劫持场景举例

        JSONP劫持也是类似, 黑客站点可以直接通过<script>标签等手段,越过浏览器CORS跨域机制,访问到你站点(还是taobao.com举例)的JSONP接口,传递回调函数callback=p, 最后你的这个JSONP接口返回数据为  p({"name":"xx", "age":"xx", "account": ""}), 回调执行了黑客前端的Javascript p函数,拿到JSONP数据。

        假设这个JSONP接口,返回一些敏感信息,如姓名、身份证信息、手机号等等, 那么黑客在自己的网页再将JSONP拿到的数据传输到自己的后台存储分析,那么你的隐私数据是不是就被泄露了。

2、JSON劫持的核心逻辑

        上面我们发现JSONP的核心逻辑还是返回的回调数据被浏览器自动执行了。  一旦响应回来,就自动执行了 p({"name":"xx", "age":"xx", "account": ""}) 这个函数, 这个p函数就是黑客的js回调函数。

        那么如果要粉碎黑客的阴谋, 我们肯定就是让这个p({"name":"xx", "age":"xx", "account": ""})函数不能如愿的执行。 寻找某种方法,让浏览器不执行这个回调函数

3、JSONP添加while(1);解决

        参考资料,发现Google是这么解决这个问题的。在接口响应返回数据的时候,在前面加一句代码while(1);。   最终响应内容是: while(1);p({"name":"xx", "age":"xx", "phone": ""})

        一旦响应到浏览器进行js代码解析,发现while(1);有一个死循环,哈哈哈, 那么黑客的js回调函数p({"name":"xx", "age":"xx", "phone": ""})就得不到执行了。 防止了JSONP的劫持问题

三、总结

        1、不要点击陌生链接,特别是邮箱收到的、短信收到的等等。 必须看下域名信息是不是正常的,多留个心眼

        2、做开发的时候,后端如果有这种JSONP的接口,那么特别小心,通过while(1);的方式可以避免JSON劫持问题。 Golang的Gin框架,可以使用SecureJSON() 输出接口内容,自带while(1);

        3、如果能通过POST请求实现的,尽量不要暴露更多这种GET的JSONP请求接口了。

这篇关于JSON劫持与while(1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/936766

相关文章

MySQL 中的 JSON 查询案例详解

《MySQL中的JSON查询案例详解》:本文主要介绍MySQL的JSON查询的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 的 jsON 路径格式基本结构路径组件详解特殊语法元素实际示例简单路径复杂路径简写操作符注意MySQL 的 J

Spring Boot中JSON数值溢出问题从报错到优雅解决办法

《SpringBoot中JSON数值溢出问题从报错到优雅解决办法》:本文主要介绍SpringBoot中JSON数值溢出问题从报错到优雅的解决办法,通过修改字段类型为Long、添加全局异常处理和... 目录一、问题背景:为什么我的接口突然报错了?二、为什么会发生这个错误?1. Java 数据类型的“容量”限制

Spring 请求之传递 JSON 数据的操作方法

《Spring请求之传递JSON数据的操作方法》JSON就是一种数据格式,有自己的格式和语法,使用文本表示一个对象或数组的信息,因此JSON本质是字符串,主要负责在不同的语言中数据传递和交换,这... 目录jsON 概念JSON 语法JSON 的语法JSON 的两种结构JSON 字符串和 Java 对象互转

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

使用Python将JSON,XML和YAML数据写入Excel文件

《使用Python将JSON,XML和YAML数据写入Excel文件》JSON、XML和YAML作为主流结构化数据格式,因其层次化表达能力和跨平台兼容性,已成为系统间数据交换的通用载体,本文将介绍如何... 目录如何使用python写入数据到Excel工作表用Python导入jsON数据到Excel工作表用

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各