V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
gkiwi
V2EX  ›  分享发现

正则表达式 DoS 攻击(ReDoS)

  •  
  •   gkiwi · 2016-08-09 16:54:30 +08:00 · 2229 次点击
    这是一个创建于 2821 天前的主题,其中的信息可能已经有所发展或是发生改变。

    拿去玩:

    import time
    import re
    
    def redos(data):
        start = time.time()
        regex = re.compile("^(a+)+$")
        #regex = re.compile('(a+)+')
        regex.match(data)
        end = time.time() - start
        print("%f" % end)
    
    if __name__ == '__main__':
        for i in xrange(1,30):
            data = 'a'*i + '!'
            redos(data)
    

    修改自: https://github.com/pete911/redos/blob/master/redos.py


    介绍:

    https://msdn.microsoft.com/zh-cn/magazine/ff646973.aspx

    https://www.owasp.org/index.php/Regular_expression_Denial_of_Service_-_ReDoS


    目前知道的几个 Evil Regex :

    http://stackoverflow.com/questions/12841970/how-can-i-recognize-an-evil-regex

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2287 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 07:18 · PVG 15:18 · LAX 00:18 · JFK 03:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.