我想知道如何自动生成小而重的内容以匹配某个正则表达式。我的意思是,对于某种表情,我正在寻找最小和最重的有效载荷。 形式上称heavy
值是 H = regexp engine work time/content length
鉴于有一个最大内容长度如何为正则表达式引擎生成最重的内容?
例正规表达式([\w%]+=[\w%]*&){500}
: 这需要〜2500个步骤来检查内容相匹配
A=& ... (498 times) ... A=&
,它需要〜250倍更多步骤检查内容是否不匹配
A=& ... (498 times) ... A=
我的观察结果如下:
- 正则表达式开始用wildchar序列(前)
/^\w+.../
是最坏的正则表达式引擎 - 当它试图匹配正则表达式,直到内容结束即内容不应与一般引擎执行更多的计算正则表达式
构建这种有效载荷的线索是什么?
是否可以自动生成这样的有效载荷?
嘿,谢谢。我的整个想法是关于是否有可能导致最差性能的正则表达式功能(当然是在失败模式下)?我将在自动或半自动模式下搜索这些正则表达式,并利用它们导致regexp引擎的拒绝服务。 我在Linux上,所以有任何在线基准测试工具? – academica