有没有一种安全的方法来使用 JavaScript 验证 JSON 输入?
我正在从 Windows 7 Gadget 中提取一些外部 JSON 数据,该小工具基本上是在 Internet Explorer 下运行的一段 JavaScript,具有高安全权限。因此,我想确保 JSON 格式正确并且不是恶意的。
有什么好的方法可以做到这一点?
I am pulling some external JSON data from a Windows 7 Gadget, which is basically a piece of JavaScript running under Internet Explorer with high security priviledges. Because of that, I want to make sure the JSON is properly formatted and isn't malicious.
What is a good way to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
JSON 是 JavaScript。因此,您可以像验证 JavaScript 一样静态验证 JSON。您担心通常可用于验证 JavaScript 的
eval
方法,并且您非常明智地避免使用这种方法。如果它是恶意的并且你执行了验证,那么你就已经完蛋了。 JSLint 是一个很棒的工具。请参阅堆栈溢出问题JSLint 是否可以离线使用? 了解如何“离线”使用此实用程序。另一种方法是使用
json2.js
< /a>.此方法正确解析包含以下内容的 JSON函数,所以请注意这个警告。
JSON is JavaScript. Therefore, you can validate JSON statically in the same way you would validate JavaScript. You are concerned about the
eval
approach that can usually be used to validate JavaScript, and you are being very wise to avoid this approach. If it's malicious and you execute to validate, well you're already screwed. JSLint is a great tool for this. See Stack Overflow question Is JSLint available for offline use? for how to utilize this utility "offline".Another approach is to use
json2.js
. This method does correctly parse JSON containingfunctions, so be aware of this caveat.
使用 JSON.parse(jsonString);。这将构建数组和对象,但不会运行 JSON 中的任何代码。要支持没有 HTML5 JSON 对象的旧版浏览器,请使用 json2.js,它使用相同的 API,在使用
eval()
处理 JSON 之前检查无效数据。Use
JSON.parse(jsonString);
. This will build arrays and objects but not run any code in the JSON. To support older browsers without the HTML5 JSON object, use json2.js which provides the same protection using the same API by checking for invalid data beforeeval()
ing the JSON.