当前位置:  开发笔记 > 编程语言 > 正文

JSLint的目的是"在正则表达式中禁止不安全"选项

如何解决《JSLint的目的是"在正则表达式中禁止不安全"选项》经验,为你挑选了2个好方法。

我有一行代码在通过JSLint运行时收到以下错误:

Lint at line 604 character 48: Insecure '^'.
numExp = parseInt(val[1].replace(/[^\-+\d]/g, ""), 10);

此错误似乎从JSLint的选项页面引用以下描述:

"true if . and [^...]  should not be allowed in RegExp literals.
These forms should not be used when validating in secure applications."

我不太明白客户端javascript应用程序如何真正被认为是安全的.即使使用最密集的正则表达式,仍然可以启动像firebug这样的东西,无论如何都要改变变量.真正的输入验证应该在服务器上完成,客户端浏览器应该坚持使用可以处理普通用户滥用的验证.

忽略此错误是否安全?我在这里错过了一个角度,因为客户端输入验证,我的应用程序将不安全吗?



1> Tomalak..:

"不安全"在这种情况下意味着"非特定".点.和专有范围[^…]都没有明确定义正则表达式应该匹配的内容.出于验证目的,这可能会提出成功匹配您没有想到和不想要的东西的风险(想想:白名单与黑名单).

在任何情况下,点和独占范围都是正则表达式的有效部分,如果它们符合您的需要(就像在这种情况下),我会认为警告过于谨慎.

恶意用户可以随时摆弄您的页面逻辑; 警告更多的是关于页面的常规操作.



2> Michael Myer..:

所有它想告诉你的是,它通常最好指定什么可以进入的,而不是什么不能.

在这种情况下,你的正则表达式实际上是剥离坏字符,所以忽略警告是安全的.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有