2011-03-19 41 views
1

我从Windows 7 Gadget中提取一些外部JSON数据,这基本上是一个运行在具有高安全特权的Internet   Explorer中的JavaScript块。因此,我想确保JSON的格式正确并且不是恶意的。有没有一种用JavaScript验证JSON输入的安全方法?

这样做的好方法是什么?

+0

只要你不尝试在验证过程中执行任何事情,它应该没问题。不要使用代码执行来测试有效性(即如果它运行,它是有效的;否则不是)。 – BoltClock 2011-03-19 22:09:44

+2

只需使用json2.js http://www.json.org – kjy112 2011-03-20 00:10:50

回答

1

使用JSON.parse(jsonString);。这将构建数组和对象,但不会在JSON中运行任何代码。要支持没有HTML5 JSON对象的旧浏览器,请使用json2.js,它使用相同的API通过在JSON之前检查无效数据来提供相同的保护。

2

JSON是JavaScript。因此,您可以像验证JavaScript一样静态验证JSON。您担心通常可用于验证JavaScript的eval方法,并且避免此方法非常明智。如果它是恶意的并且你执行验证,那么你已经被搞砸了。 JSLint是一个很好的工具。请参阅堆栈 溢出问题Is JSLint available for offline use?有关如何利用此“实用程序”功能的说明。另一种方法是使用json2.js。此方法可以正确解析包含 函数的JSON,因此请注意此警告。

相关问题