JSON

JSON 知识量:10 - 17 - 48

5.2 安全意识><

决策上的失误- 5.2.1 -

再好的技术如果用于做坏事,就会成为最坏的技术。JSON本身不会构成什么威胁,但它实际上会不会有威胁,也取决于如何使用它。下面是一个不友好的JOSN:

{
    "message": "<div onmouseover=\"alert('wrong!')\">hover here.</div>"
}

以上JSON中包含了一段不友好的JavaScript代码,运行时,每当鼠标移动到hover here上时,就会弹出“wrong!”。

要想阻止这种行为,可以采取一些手段使得消息中不包含HTML代码。也可以对消息中的HTML代码进行转码,例如将<div>转为&lt;div&gt;,这样就可以将HTML安全的插入页面中。

许多的攻击之所以会成功,都是由于网站在设计时没有对安全问题产生足够的重视,没有考虑过黑客会如何利用网站的漏洞进行攻击。在进行网站或系统架构设计时,应该建立足够的安全意识,添加额外的安全策略对威胁加以防范。

专业术语和重要概念- 5.2.2 -

专业术语:

  • 跨站请求伪造(CSRF):指利用站点对用户浏览器的信任进行的攻击。

  • 顶层JSON数组:存在于JOSN名称-值对之外的位于文档最顶层的JSON数组。

  • 注入攻击:依赖于将数据注入到Web应用程序以方便恶意数据执行或编译的攻击。

  • JSON跨站脚本攻击:通过截取或将站点中所使用的第三方代码更换为恶意脚本,来对站点进行的一种注入攻击。

重要概念:

  • JSON本身不构成什么威胁,它只是文本。

  • 处理JSON安全问题时,应注意以下几点:

    1、不要使用顶级数组。顶级数组是合法的JavaScript脚本,它们可以用<script>标签链接并使用。

    2、对于不想公开的资源,仅允许使用HTTP协议的POST方法请求,而不是GET方法。GET方法可以通过URL来请求,甚至可以放在<script>标签中。

    3、使用JSON.parse()函数来代替eval()函数。eval()函数会将传入的字符串编译并执行,更易被攻击。JSON.parse()函数仅解析JSON数据。

  • 安全漏洞通常是安全意识淡薄导致的。