当前位置: 首页 > 面试题库 >

评估是邪恶的……那么我该怎么用呢?

濮阳和泰
2023-03-14
问题内容

一个ajax请求返回一个标准的JSON数组,其中填充了用户的输入。输入已经过清理,使用eval()函数,我可以轻松创建javascript对象并更新页面。

这就是问题所在。无论我多么努力清理输入,我都不想使用eval()函数。我已经检查了谷歌的方法来使用“没有eval的AJAX中的JSON”,并且遇到了很多不同的方法…

我应该使用哪一个?有没有一种标准的,经过验证的安全方法来做到这一点?


问题答案:

json.org有一个不错的javascript库

简单用法:

JSON.parse('[{"some":"json"}]');
JSON.stringify([{some:'json'}]);

编辑 :正如评论中指出的那样,如果您查看eval的来源,则将使用eval(尽管它首先要进行清理)

为了完全避免它,请查看json_parse或json-sans-
eval

json2.js不安全,json_parse.js缓慢,json-sans-eval.js未验证



 类似资料:
  • 问题内容: 按照目前的情况,这个问题不适合我们的问答形式。我们希望答案能得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 9年前关闭。 在这个问题中,有什么方法可以只接受JTextField中的数值吗?答案之一表明JFormattedTextField存在问题。 我还没有使用过它,但是有人可以

  • Lua 是所有脚本语言中最快、最简洁的,我们爱她的快、她的简洁,但是我们也不得不忍受因为这些快、简洁最后带来的一些弊端,我们来挨个数数 module 有多少“邪恶”的吧。 由于 lua_code_cache off 情况下,缓存的代码会伴随请求完结而释放。module 的最大好处缓存这时候是无法发挥的,所以本章的内容都是基于 lua_code_cache on 的情况下。 先看看下面代码: loc

  • 我最近意识到正则表达式拒绝服务攻击,并决定根除所谓的“邪恶”正则表达式模式,只要我能在代码库中找到它们,或者至少是那些用于用户输入的模式。上面的OWASP链接和wikipedia中给出的示例很有帮助,但它们不能很好地用简单的术语解释问题。 邪恶正则表达式的描述,来自维基百科: 正则表达式将重复(“,“*”)应用于复杂子表达式 举个例子,同样来自维基百科: 这是一个没有更简单解释的问题吗?我正在寻找

  • 问题内容: 在我用php开发的所有年份中,我一直都听说使用是邪恶的。 考虑以下代码,使用第二个(更优雅)的选项是否有意义?如果没有,为什么? 问题答案: 在将eval()称为纯邪恶时,我会保持谨慎。 动态评估是一个强大的工具,有时可以节省生命。使用eval()可以解决PHP的缺点(请参见下文)。 eval()的主要问题是: 潜在的不安全输入。 传递不受信任的参数是一种失败的方法。确保参数(或其一部

  • 问题内容: 我听说过很多地方,PHP的。根据PHP5.3的LSB和闭包,我们没有理由依赖或。 有 什么 可能的情况是PHP 5.3中最好(唯一?)的答案? 这个问题 不是 关于邪恶是否普遍存在,因为显然不是。 答案摘要: 评估数值表达式(或PHP的其他“安全”子集) 单元测试 交互式PHP“外壳” 可信赖的反序列化 一些模板语言 为管理员和/或黑客创建后门 与<PHP 5.3的兼容性 检查语法(可

  • 我试图找出为什么使用在python(以及一般编程)中被认为是不好的做法。有人能解释一下吗?更多信息的链接也将不胜感激。