赞
踩
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数据进行校验和过滤。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。