JavaScript eval()函数是否邪恶

JavaScript eval()函数是否邪恶

eval()是JavaScript内置的函数,用于评估作为参数的表达式,并执行给定的一个或多个语句。

eval()被认为是邪恶的原因:使用eval()存在几个问题,性能和代码注入被认为是最有问题的。性能——由于脚本编译器无法预编译eval(),即使在运行时编译代码时,它也要运行编译器。尽管不多,但这仍然降低了性能。

它很复杂-使用eval()的大多数情况下,根本不需要它。因此,在这种情况下,更喜欢替代方法而不是eval()。代码注入-eval()将字符串作为代码运行,黑客只需使用eval()就可以轻松获取特权信息。当程序从用户那里接收输入并在客户端上运行时,这是一个很大的安全威胁。这反过来可以用来操纵原始程序本身。

更难调试-在调试时需要双倍工作。

示例: 在这个示例中,我们将看到为什么在JavaScript中eval函数被认为是邪恶的。

<script type="text/javascript"> 
    var a=eval("4+3"); 
    console.log(a); 
</script>

输出:

7

当 eval() 不是恶魔: 对于在浏览器上运行程序的情况。此外,您需要非常小心,不要传递任何可能引起代码注入并操纵程序的信息。通常情况下,如果有任何能提供与 eval() 相同结果的函数的话,优先使用替代函数。闭包、面向对象技术和函数式技术通常可以替代 eval()。在无法做到这一点并且只能使用 eval() 的情况下,优先选择不会以任何方式操纵 DOM 的代码。如果在服务器上运行 eval(),并使用开发人员未创建或开发人员未对其进行过滤的客户端提交的输入,那么 eval() 就是恶魔。如果在客户端上运行,并且使用了由客户端制作的未经过滤的输入,那么 eval() 就不是恶魔。显然,您应该始终对输入进行过滤,以便对代码消耗的内容有一定的控制。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程