use*_*878 9 javascript sanitization eval
我想用来eval()解决简单的方程和逻辑表达式,例如12*(4+3).
当输入(可能不受信任)被消毒并且只允许数字时,客户端eval的安全性如何,+ - */()<> |&!和'真'和'假'这个词?
方程式的可用JS解析器对我来说太大而且功能强大.我把自己扔了一个,但是与eval'ing相比,它有很多代码,而且它还不完美.
编辑:所以是的,我想我特别要问的是,有人可以执行除了数字和+ - */()<> |&!之外的任何恶意代码.?(我猜'真''和'假'是无害的)
我认为这是完全安全的,我不认为那eval是邪恶的。只需谨慎使用它,\n并仔细检查您的清理功能。
由于您既不允许 unicode 字母_也$不允许通过清理,并且 javascript 标识符必须包含字母,所以不可能污染全局范围,也不可能调用函数。
来自MDN 标识符页面:
\n\n\n\n\n从 JavaScript 1.5 开始,您可以在标识符中使用 ISO 8859-1 或 Unicode\n 字母,例如 \xc3\xa5 和 \xc3\xbc。您还可以使用 \\uXXXX\n Unicode 转义序列作为标识符中的字符。
\n
请记住捕获eval调用引发的异常,因为总是可能输入错误的表达式,例如4><5。
另外,请确保检查您允许的字符,而不是检查您拒绝的字符,以便默认情况下会拒绝您没有考虑到的字符。
\n| 归档时间: |
|
| 查看次数: |
918 次 |
| 最近记录: |