JSON注入

本文阅读 3 分钟

1、简介 JSON是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。它是基于Javascript的一个子集,JSON采用完全独立于语言的文本格式,但是也使用类似于C语言家族的习惯(C、C#、C++、Java、Javascript、Perl、Python等都可以使用JSON),这些特性使JSON成为理想的数据交换语言。 JSON可以将Javascript中的对象转换为字符串,然后在函数、网络之间传递这个字符串。

2、JSON结构 JSON建构于两种结构: ①“名称/值”对的集合。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。 ②值的有序列表。在大部分语言中,它被理解为数组(array)。

例如:下面一段示例使JSON最简单的Key-Value示例(名称-值对,键值对):

{ "Username":"xsser"}
{ "Username":"xsser","Password":"12345","Email":"1234@st.com"}

当需要表示一组值的时候,JSON不但能够提供高可读性,而且可以减少复杂性。 例如表示一个管理员表,在JSON中,如下:

{ "Users":[
    { "Username":"zhangsan","Password":"12345","Email":"12345@st.com"}
    { "Username":"lisi","Password":"123123","Email":"123123@st.com"}
    { "Username":"wangwu","Password":"321321","Email":"321321@st.com"}
]  }

JSON注入是指应用程序所解析的JSON数据来源于不可信赖的数据源,程序没有对这些不可信赖的数据进行验证、过滤,如果应用程序使用未经验证的输入构造 JSON,则可以更改 JSON 数据的语义。在相对理想的情况下,攻击者可能会插入无关的元素,导致应用程序在解析 JSON数据时抛出异常。 在JSON中是根据引号(")、冒号(:)、逗号(,)、花括号({})来区分各字符的意义的。如果向JSON中注入恶意字符,那么JSON将解析失败。 例如:输入的Password值为:admin"1,那么在JSON语句中为:“password”:“admin"1”,为了"password":“admin"1"成功解析,我们可以把"admin"1"转换为"admin"1”。 JSON注入和XML注入、SQL注入一样,都需要对影响语句的内容进行转义,如双引号、花括号等。

1、后台代码对JSON数据进行编码; 2、使用安全的JSON插件防止JSON注入; 3、对JSON数据进行校验和过滤。

本文为互联网自动采集或经作者授权后发布,本文观点不代表立场,若侵权下架请联系我们删帖处理!文章出自:https://blog.csdn.net/sycamorelg/article/details/118031296
-- 展开阅读全文 --
Web安全—逻辑越权漏洞(BAC)
« 上一篇 03-13
Redis底层数据结构--简单动态字符串
下一篇 » 04-10

发表评论

成为第一个评论的人

热门文章

标签TAG

最近回复