Javascript 在此受限设置中,eval()是否会导致安全问题?

Javascript 在此受限设置中,eval()是否会导致安全问题?,javascript,security,Javascript,Security,我正在写一个网站,将包括一些数学练习。我不太在乎用户是否试图作弊,所以我通过Javascript更正答案 在我的特殊情况下,表单中有一个字段。我希望允许用户输入一个数学表达式(比如3/2),并使用其结果判断用户是否正确。为此,我会使用eval 我的javascript永远不会直接从URL读取,而只是从表单读取。此页面中的任何结果都不会被存储以显示给任何用户(也许我们以后会保留统计分析的结果,然后通过PHP存储在数据库中,但我可能需要清理PHP本身的任何输入,因为担心用户直接使用POST) 会出什

我正在写一个网站,将包括一些数学练习。我不太在乎用户是否试图作弊,所以我通过Javascript更正答案

在我的特殊情况下,表单中有一个字段。我希望允许用户输入一个数学表达式(比如3/2),并使用其结果判断用户是否正确。为此,我会使用eval

我的javascript永远不会直接从URL读取,而只是从表单读取。此页面中的任何结果都不会被存储以显示给任何用户(也许我们以后会保留统计分析的结果,然后通过PHP存储在数据库中,但我可能需要清理PHP本身的任何输入,因为担心用户直接使用POST)


会出什么问题=P

您需要确保

eval
中不会出现任何非法行为,这些行为可能会破坏脚本(这可能是有意或无意的,不是攻击,而是用户错误)。我会说要么在eval之前验证字段,以确保它是算术的,并且仅此而已

不管使用哪种用例,
eval
在任何编程语言中通常都被认为是一种糟糕的实践。当然,这里没有真正的安全问题,但干净可靠的代码是有价值的

我建议看一下要用来代替
eval

会出什么问题

因为Javascript都是客户端的,并且您没有向服务器发送或持久化任何内容,所以实际上什么都没有。聪明的用户可以通过打开自己的页面或将脚本放入框中来弹出警报来娱乐自己,但他们也可以通过开发人员控制台来实现这一点。只要一切都停留在Javascript端,您就应该非常安全,任何造成的损坏都可以通过简单的页面刷新来修复


尽管如此,仔细想想,至少通过一种基本的方法来验证输入,以避免副作用,这似乎是一个好主意和好做法。虽然OP询问它是否安全,而不是它是否专业,但似乎值得一提的是,一个坚实、专业的感觉页面应该确保输入仅具有预期效果。

没有安全问题。用户总是可以通过执行任意代码来入侵自己的计算机。仅供参考:checkout tryruby.org和tryhaskell.org。我认识一个拥有tryjavascript.org的人,我相信他会很想得到一些帮助,让它变得很酷。我不认为这是一个问题的答案,但绝对值得一看,因为它有更好的操作员支持。这是一个有趣的库,我以前用过很多次。