网络优化

使用安全json parser防止json注入

2019-09-12 热度:359 ℃


今天在网上瞎逛又看到了一个不错的东西。

有些程序员如果没有很好的在javascript中解析json数据,往往会直接eval把json转成js对象,这时候如果json的数据中包含了被注入的恶意数据,则可能导致代码注入的问题。

正确的做法是分割出json里包含的特殊字符,然后再解析为对象

http://json.org/json2.js 中是通过正则来完成的。

<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->www.it165.net

// We split the second stage into 4 regexp operations in order to work around
// crippling inefficiencies in IE's and Safari's regexp engines. First we
// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
// replace all simple value tokens with ']' characters. Third, we delete all
// open brackets that follow a colon or comma or that begin the text. Finally,
// we look to see that the remaining characters are only whitespace or ']' or
// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.

            if (/^[\],:{}\s]*$/.
test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').
replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {

// In the third stage we use the eval function to compile the text into a
// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
// in JavaScript: it can begin a block or an object literal. We wrap the text
// in parens to eliminate the ambiguity.

                j = eval('(' + text + ')');

目前不少写的好的框架和js解析函数都取用了这种做法。

所以,以后千万别直接eval了。

分享给朋友:

发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

相关文章

HTML5最新漏洞:用户硬盘或被垃圾数据塞满

HTML5最新漏洞:用户硬盘或被垃圾数据塞满

 新浪科技讯 北京时间3月4日早间消息,HTML5编程语言的一个最新漏洞今天被发现,它允许网站利用数GB垃圾数据对用户展开轰炸,甚至会在短时间内将硬盘塞满。多款主流浏览器均会受此影响。 ...

115网盘可绕过验证直接加好友

115网盘可绕过验证直接加好友

随便找个没有验证过的好友请求,几下请求编号nid   然后:   POST /?ac=add_friend HTTP/1.1 Host: msg.115.c...

Web安全学习笔记

Web安全学习笔记

背景 说来惭愧,6 年的 web 编程生涯,一直没有真正系统的学习 web 安全知识(认证和授权除外),这个月看了一本《Web 安全设计之道》,书中的内容多是从微软官方文档翻译而来,这...

Metasploit学习之常见的服务扫描与口令猜解

Metasploit学习之常见的服务扫描与口令猜解

有的时候我们利用了Nmap发现了端口和服务器上的服务器,然而我们并不是专业的hack,很多时候或许我们只能破FTP 共享和telnet,虽然够低端,但是如果你已经在一个局域网中了,上面3...

WordPress插件Foxypress uploadify.php可任意执行代码

WordPress插件Foxypress uploadify.php可任意执行代码

require 'msf/core' class Metasploit3 < Msf::Exploit::Remote Rank = Exce...

高德导航安全问题致用户资料泄露与修复

高德导航安全问题致用户资料泄露与修复

由于某安全问题导致全线业务受影响,用户资料泄露,修改官网app、地图下载地址,绑个马改个地址,应该挺爽的。 能添加序列号删除序列号,不知道删掉后,用它注册的设备还能不能用了。。淘宝开个...

程序员该如何防御xss类漏洞

程序员该如何防御xss类漏洞

1、用户输入原样输出 利用方法:直接在输出的地方进行xss攻击 解决方案: 需要进行过滤,最常见的比如过滤 < 、>, 如下内容输入: http://xxx.com...

审计easethink payment.php注入漏洞分析及解决方案

审计easethink payment.php注入漏洞分析及解决方案

  漏洞作者:leehenwu 01漏洞分析   漏洞在payment.php文件 elseif($_REQUEST['act']=...

利用XSLT继续击垮XML

利用XSLT继续击垮XML

0x00 介绍 XSL 首先我们要说的是,这个XSLT应该这么断句:XSL-T。XSL指的是EXtensible Stylesheet Language,中文被很直白地翻译成扩展...

LDAP注入与防御解析

LDAP注入与防御解析

    1 LDAP出现的背景   LDAP(Lightweight Directory Access Protocol):轻量级目录访问协议,是一种在线目录访问协议。LD...

请先 登录 再评论,若不是会员请先 注册