javascript eval会带来什么问题
我试着用谷歌搜索,但没有得到非常具体的答案。。再说一次,我可能没有使用正确的关键字。。有人能指出javascript eval可能导致的“安全”问题吗?有例子可以很好。如果您可以指向一个现有的web资源,也可以这样做javascript eval会带来什么问题,javascript,eval,Javascript,Eval,我试着用谷歌搜索,但没有得到非常具体的答案。。再说一次,我可能没有使用正确的关键字。。有人能指出javascript eval可能导致的“安全”问题吗?有例子可以很好。如果您可以指向一个现有的web资源,也可以这样做 编辑:我只需要eval的安全含义 一般来说,几乎总是有一种替代方法: 更快 易读 如果出现错误,更容易调试 在意外用户输入时中断的概率较低 性能 eval函数将字符串解析为代码,这比例如访问属性要复杂得多 与myForm[field].value相比,考虑eval('myForm
编辑:我只需要eval的安全含义 一般来说,几乎总是有一种替代方法:
- 更快
- 易读
- 如果出现错误,更容易调试
- 在意外用户输入时中断的概率较低
eval
函数将字符串解析为代码,这比例如访问属性要复杂得多
与myForm[field].value相比,考虑eval('myForm.'+field+'.value')
的效果
结构
几乎总是在使用eval
函数时,会有一种更简单的方法来执行此操作。避免使用eval
功能会使您找到更好的问题解决方案
考虑使用动态变量名(如eval('myVars'+i)
)与使用数组(如myArray[i]
)相比的效果,eval()可能是设计不佳的标志。例如,有时人们使用它来访问对象属性,因为他们不知道您可以使用[]符号,即eval('obj.'+prop_name)。如果您评估()用户内容,它也是XSS漏洞的来源,因为它可能被解释为JS。它也往往比备选方案慢
这是使用eval()解析JSON时XSS的最基本示例:
eval({"a": "b", 'c': "d" + alert("xss") + ""})
要得到这样一个漏洞,你必须懒得构建JSON,而不是转义引号,但还有更复杂的例子,使用Douglas Crockford()这样的专门库可以避免它。安全含义是,如果eval()的参数是从某个第三方获取的(用户输入、Web服务等),您可能正在运行其他人的代码,这些代码可能会执行一些您意想不到的操作
为什么这很重要?
假设您正在使用某个第三方web服务来丰富用户体验,可能是从facebook获取信息,而该web服务遭到黑客攻击。现在,黑客可以在您的页面上执行javascript代码,因为您eval()来自web服务的一些结果,使得黑客能够在您的DOM中注入任何东西,用特洛伊木马等感染您的用户
现在,如果您没有使用eval(),所有可能发生的情况是,您可能会得到显示的错误数据,或者,如果您是一名好学的程序员,甚至会显示一条关于特定数据的错误消息。对不起,我的错误。.忘记将安全部分添加到问题中。.我只需要与eval相关的安全问题。+1用于您的工作。..t他现在提出的问题…可能是+1的重复,谢谢你的回答..我只需要eval的安全含义..现在更改了问题..我添加了一个非常简单的示例。