Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript eval会带来什么问题_Javascript_Eval - Fatal编程技术网

javascript eval会带来什么问题

javascript eval会带来什么问题,javascript,eval,Javascript,Eval,我试着用谷歌搜索,但没有得到非常具体的答案。。再说一次,我可能没有使用正确的关键字。。有人能指出javascript eval可能导致的“安全”问题吗?有例子可以很好。如果您可以指向一个现有的web资源,也可以这样做 编辑:我只需要eval的安全含义 一般来说,几乎总是有一种替代方法: 更快 易读 如果出现错误,更容易调试 在意外用户输入时中断的概率较低 性能 eval函数将字符串解析为代码,这比例如访问属性要复杂得多 与myForm[field].value相比,考虑eval('myForm

我试着用谷歌搜索,但没有得到非常具体的答案。。再说一次,我可能没有使用正确的关键字。。有人能指出javascript eval可能导致的“安全”问题吗?有例子可以很好。如果您可以指向一个现有的web资源,也可以这样做


编辑:我只需要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的安全含义..现在更改了问题..我添加了一个非常简单的示例。