【问题标题】:How can I check if a regular expression is not harmful in PHP如何检查正则表达式在 PHP 中是否无害
【发布时间】:2012-02-04 07:57:50
【问题描述】:

我正在做一个项目。这个项目有一个我们用 PHP 编写的用户界面。在管理部分,有一个表单输入,用户需要输入正则表达式。据我所知,我无法检查是否是正则表达式,因为每个字符串都是正则表达式。我想要做的是检查这个输入是否正确?我可以通过哪种方式做到这一点?

【问题讨论】:

  • “有害”是什么意思?你想检查字符串是否是一个 valid 正则表达式,或者它是否是一个 malicious 正则表达式?
  • 好吧,我想看看一个有害正则表达式的样本。
  • @juhana:^(a*a*)*$ 是经典之作。在aaaaaaaaaaaaaab 上试试看你的 CPU 烧毁。
  • @Tim, PHP/Perl 中

标签: php regex forms security


【解决方案1】:

通过分析正则表达式很难做到这一点(实际上没有解析正则表达式本身。

我建议您对pcre.backtrack-limit and pcre.recursion_limit 使用保守的设置。

【讨论】:

    【解决方案2】:

    这真的取决于你期望程序做什么。如果你正在编写一个正则表达式测试器,你只需要有另一个字段,他们可以输入一个字符串来检查它。然后使用String.test(/regex/)String.match(/regex/) 看看是否适合该字符串。

    【讨论】:

    • 它不是一个正则表达式测试器,我从用户那里获取一个正则表达式并将它发送到一个用 python 编写的程序。
    猜你喜欢
    • 1970-01-01
    • 2013-04-29
    • 1970-01-01
    • 1970-01-01
    • 2014-07-13
    • 2018-03-14
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    相关资源
    最近更新 更多