为什么不用eval()JSON?

Nik*_*kiC 8 javascript json eval

据我所知eval(),由于安全性,JavaScript中的JSON对象被认为是不好的做法.如果JSON来自另一台服务器,我可以理解这种担忧.

但是如果JSON是由我自己的服务器提供的并且是使用PHP创建的json_encode(让我们假设它没有错误),那么简单地用于eval()读取JS中的JSON 是否合法,或者是否存在我目前无法想到的任何安全问题?

我真的不想处理动态加载JSON解析器,并且很乐意简单地使用eval().

PS:我显然会使用本机JSON对象,如果它可用,但想要回归到eval()IE/Opera.

Mat*_*nes 9

在你的场景中,问题变成了,PHP从哪里获取javascript来执行?这个频道是否安全,并且没有潜在的用户操纵?如果您不直接控制该频道怎么办?

  • @nikic:想想中间人攻击. (2认同)

zzz*_*Bov 7

您可以通过多种方式破坏您的安全性.

  • 理论上,中间人攻击可以改变传递给客户端的数据内容.
  • 您的服务器流量可以在其他地方截获,并且可以提供不同的内容(与MIM攻击不完全相同)
  • 您的服务器可能会受到攻击,数据源可能会被篡改.

这些只是简单的例子.XSS很讨厌.

"一盎司的预防值得一磅治疗"