javascript – JSLint“disallow不安全在regex”选项的目的

我有一行代码,当运行通过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的东西,并改变变量。真正的输入验证应该在服务器上完成,客户端浏览器应该坚持使用验证来处理一般用户的滥用。

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

“不安全”在本上下文中表示“非特异性”。两个点。和排他范围[^ …]没有清楚地定义应该由正则表达式匹配。为了验证目的,这可以提出成功匹配您没有想到和不想要的东西的风险(想想:白名单与黑名单)。

在任何情况下,点和排他范围是正则表达式的有效部分,如果他们做你需要的(在这种情况下),我会认为警告过于谨慎。

恶意用户可以随时解释您的页面逻辑;该警告更多是关于页面的正常操作。

http://stackoverflow.com/questions/2372635/purpose-of-jslint-disallow-insecure-in-regex-option

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:javascript – JSLint“disallow不安全在regex”选项的目的