擅长:python、mysql、java
<p>当你需要执行官和评估官的时候,是的,你真的需要他们。</p>
<p>但是,这些函数(以及其他脚本语言中类似的构造)的大多数在野外使用是完全不合适的,可以用其他更简单的构造来代替,这些构造更快、更安全,并且bug更少。</p>
<p>您可以通过适当的转义和过滤,安全地使用exec和eval。但是那种直接使用exec/eval来解决问题的编码程序(因为他们不理解语言提供的其他功能)并不是那种能够正确处理的编码程序;而是那种不理解字符串处理并盲目地连接子字符串的编码程序,导致脆弱的不安全代码。</p>
<p>这是弦的诱惑。把字符串段放在<em>周围看起来很容易,而且愚蠢的程序员会认为他们理解自己在做什么。但经验表明,在某些角落(或不是这样的角落)的情况下,结果几乎总是错误的,往往具有潜在的安全隐患。这就是为什么我们说eval是邪恶的。这就是为什么我们说HTML的正则表达式是邪恶的。这就是我们推动SQL参数化的原因。是的,你可以通过手动字符串处理来解决这些问题。。。但除非你已经明白我们为什么这么说,否则你很可能不会。</p>