gpt4 book ai didi

javascript - 我如何以编程方式识别恶意正则表达式?

转载 作者:行者123 更新时间:2023-11-29 21:38:33 24 4
gpt4 key购买 nike

是否有一种算法可以确定给定的 JavaScript 正则表达式是否容易受到 ReDoS 的攻击? ?该算法不必是完美的——一些误报和漏报是可以接受的。 (我对 ECMA-262 正则表达式特别感兴趣。)

最佳答案

如果不实际运行它,很难验证正则表达式是否是邪恶的。您可以尝试检测 Wiki 中详述的一些模式并概括它们:

例如对于

  • (a+)+
  • ([a-zA-Z]+)*
  • (a|aa)+
  • (a|a?)+
  • (.*a){x} 对于 x > 10

您可以检查 )+)*){ 序列并针对它们进行验证。但是,我保证攻击者会找到绕过它们的方法。

本质上它是一个minefield to allow user set regexps .但是,如果您可以使正则表达式搜索超时,终止线程,然后将该正则表达式标记为“错误”,则可以在一定程度上减轻威胁。如果稍后使用正则表达式,也许您可​​以通过在入口点针对预期输入运行它来验证它?

稍后,如果在后期评估的文本对您的正则表达式有不同的影响,您仍然需要能够终止它,并将其标记为错误,以便在没有用户干预的情况下不会再次使用它。

关于javascript - 我如何以编程方式识别恶意正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34042556/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com