json相关安全问题

前言:
最近经常遇到json的事情,由于不懂所以系统的学习一下,记录此贴。
00x1:
JSON是啥?Java Objiect Notaton 谷歌翻译过来就是JS对象标记,是一种轻量级的数据交换格式
常用格式与python字典类似的键值对,相比于xml,json更小,更快,更容易解析,就是短,频,快。
JSON是独立于语言,与javascript的关系是使用js的语法进行数据描述对象,可以和js相互转换。
列如常见格式:
{
"site":
[
{"wode":"18cm"},{"url":"https://xxxx.com"},
{"nide":"1cm"},{"url":"http:////"},
]
}
js对象和json的相互转换:
JSON.string和JSON.parse()列如:
{"wode":"18cm","url":"https://xxxx.com","nide":"1cm","url":"http://ooo.com"}
转化为json对象:
var obj =JSON.parse({"wode":"18cm","url":"https://xxxx.com","nide":"1cm","url":"http://ooo.com"})
网页使用:
<p id="demo"></p>
<script>
var obj = JSON.parse({"wode":"18cm","url":"https://xxxx.com","nide":"1cm","url":"http://ooo.com"})
document.getElenmentById("demo").innerHTML = obj.wode+ ":" obj.url;
</script>
json有没有和字符串很像
00x3:
简单说一下json劫持:
json在传输中一般有两种的传输方式:xmlhttp传输(同域)和<script>传输(跨域)json 如果在进行跨域的情况下,一般都是前端定义,后端处理,然后再到前端调用,想象一下这个过程,如果调用的回调函数没有进行有效的安全保护,和csrf一样,利用对浏览器的信任,在受害者登陆网站拿到json返回的敏感信息了,然后点击了黑客构造恶意链接,恶意链接构造为把json数据发送到黑客服务器。简单的利用就是抓包找哪个包一般是数据交互的包返回了json敏感信息,然后访问该地址能不能访问,
给出代码直接弹出json,
<> function jsonp1(json){alert(JSON.stringify(jso))}</>
<src="json地址如:https://xxxx.com/1?callback=jsonp1>有局限性。
防御建议:
1.避免进行跨域的数据传输
2.在跨域过程中敏感数据加入对权限进行限制
2.1:referer的限制,添加token值,
3.在数据的头部加入while(1),避免数据被<script>标签应用,防止有特效的浏览器里面导致数据泄露。这个开始没有看懂是啥意思,百度一下没找到,我想了一下,while(1)的意思是无线循环。
00x4:
json注入:
说到json注入,我觉得要好好理解"标点符号:,不然注入是注入进去了但是没法执行,
json是根据引号("),冒号(:),逗号(,)和花括号:({)
闭合好前面的标点符号,然后注释掉后面的符号,和xss结合就是把xss代码注入进去然后在回调在前端后直接弹窗,json注入没啥,威胁,但是和xss结合起来就和xss一样了,不过利用条件有点难。
防御倒是很简单:
直接转义,编码,或者调用java-lib.jar组件来组建json数据。
from
上一篇:关于jQuery的一些东西


下一篇:Oracle常见死锁发生的原因以及解决方法