【发布时间】:2010-09-07 21:13:04
【问题描述】:
给定一串 JSON 数据,我如何安全地将那个字符串转换为 JavaScript 对象?
显然,我可以通过以下方式不安全地执行此操作:
var obj = eval("(" + json + ')');
但这让我很容易受到包含其他代码的 JSON 字符串的攻击,简单地 eval 似乎非常危险。
【问题讨论】:
-
在大多数语言中,eval 带有额外的风险。 Eval 为黑客的利用敞开了大门。但是,请记住所有 javascript 都在客户端上运行。 预计它将被黑客更改。他们可以 EVAL 任何他们想要的东西,只需使用控制台。您必须在服务器端建立保护。
-
好的,现在是 2014 年,您永远不应该使用
eval来解析 JSON 字符串,因为您会将代码暴露给“代码注入”。请改用JSON.parse(yourString)。 -
JSON 数据是文字吗?
-
@shanechiu:如果您的意思是标量数据类型,是的。只是一个带有键值语法的字符串。
-
查看
parse()方法的文档:w3schools.com/js/js_json_parse.asp
标签: javascript json parsing