(Last Updated On: 2018年8月8日)正規表現のアルゴリズムを攻撃するDoS攻撃のReDoSを可能な限り回避する方法を考えてみます。 追記: 破滅的なReDoSは非常に短い検索対象文字列でDoS攻撃が可能でした。念の為と思い、このエントリでは正規表現検索の対象文字列を短くする対策を紹介していましたが、この種の対策が効果があるケースがありました。 ReDoSに脆弱になる典型的な正規表現は以下のような正規表現です。 Evil Regex pattern examples (a+)+ ([a-zA-Z]+)* (a|aa)+ (a|a?)+ (.*a){x} | for x > 10 Payload: “aaaaaaaaaaaaaaaaaaX” 出典:CHECKMARX 2015 (PDF) マッチパターンが繰り返される正規表現が問題になります。 メールアドレスにマッチする正
![ReDoSの回避](https://cdn-ak-scissors.b.st-hatena.com/image/square/9d2015857e00558eb990db2db4a4490aa83e71f0/height=288;version=1;width=512/https%3A%2F%2Fblog.ohgaki.net%2Fwp-content%2Fuploads%2F2013%2F11%2Fcropped-blog_header-2.jpg)