【问题标题】:Why is [^...] in /RegExp/ not secure? [duplicate]为什么 /RegExp/ 中的 [^...] 不安全? [复制]
【发布时间】:2015-03-03 17:22:38
【问题描述】:

jslint 检测到我的以下代码不安全:

/([^\n]+)([\n\s]*)/g

后来我了解到有一个 lint 选项:

". 和 /RegExp/"中的 [^...]

你可以通过here找到它

为什么不安全?

【问题讨论】:

  • 提供整个可重现的代码块,以便我们也能看到。
  • 这将是一个更好的副本:stackoverflow.com/a/4109254/251311
  • 只有我一个人认为 JSLint 试图做的工作比它打算做的要多得多吗? (更不用说它以一种可怕的方式做到了)
  • @dandavis:似乎它也尝试检查安全性。如果有一天它会抱怨代码 cmets 中的语法,我不会感到惊讶
  • @zerkms 我同意,jshint 要好得多。像这样的魔法警告会给开发人员一种错误的安全感。它只会在某些情况下不安全。

标签: javascript regex


【解决方案1】:

问题在于您在正则表达式中允许几乎任何内容的 [^...] 字符,而 jshint 检测到安全风险。

这就是jslint docs 所说的 [^...]:

如果 .并且 [^...] 应该在 RegExp 文字中被允许。他们匹配 比预期更多的材料,使攻击者能够混淆 应用程序。在安全验证时不应使用这些表格 应用程序。

【讨论】:

    猜你喜欢
    • 2011-06-16
    • 2014-06-12
    • 2014-04-30
    • 2014-03-26
    • 2011-08-13
    • 2012-03-22
    • 2015-06-19
    • 1970-01-01
    • 2019-02-07
    相关资源
    最近更新 更多