有没有一种安全的方法来使用 JavaScript 验证 JSON 输入?

发布于 2024-10-25 09:52:07 字数 148 浏览 2 评论 0原文

我正在从 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

倦话 2024-11-01 09:52:07

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 containing
functions, so be aware of this caveat.

动听の歌 2024-11-01 09:52:07

使用 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 before eval()ing the JSON.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文