据我所知,由于安全性,JavaScript中的eval()
JSON对象被认为是不好的做法。如果JSON来自另一台服务器,我可以理解这种担忧。
但是如果JSON是由我自己的服务器提供的并且是使用PHP的json_encode
创建的(让我们假设它没有错误),那么简单地使用eval()
来读取JS中的JSON是否合法或者我目前无法想到任何安全问题?
我真的不想处理动态加载JSON解析器,并且很乐意只使用eval()
。
PS:我显然会使用原生的JSON
对象(如果可用),但想要回归到eval()
的IE / Opera。
答案 0 :(得分:9)
在你的场景中,问题变成了,PHP从哪里获取javascript来执行?这个频道是否安全,并且没有潜在的用户操纵?如果您不直接控制该频道怎么办?
答案 1 :(得分:7)
有许多方法可能会危及您的安全性。
这些只是简单的例子。 XSS很讨厌。
“一盎司的预防值得一磅治疗”答案 2 :(得分:3)
除了明显的安全问题:
答案 3 :(得分:0)
提示: 在asp.net中使用JSON被认为是糟糕的,因为DateTime在服务器和客户端之间的解析不同,所以我们使用特殊的函数来反序列化javascript中的日期。我不确定PHP是否有同样的问题,但值得一提。
答案 4 :(得分:0)
看看这个:http://blog.mozilla.com/webdev/2009/02/12/native-json-in-firefox-31/
所以至少对于firefox你可以使用内置的json解析器
答案 5 :(得分:-2)
真的?这里的一些人是偏执狂。如果您正在提供JSON并且您知道它是安全,则可以回退(*)到eval();
而不是IE的js lib。毕竟,IE用户还有更多需要担心的问题。
中间人的争论是bull *。
(*)单词后备和安全以粗体显示,因为此处有些人没有看到它们。