Node.js · Senior · Pytanie 11 z 75
Co zwykle sprawia, że wolne wyrażenie regularne blokuje serwer Node.js (ReDoS)?
/^(a+)+$/.test("aaaaaaaaaaaaaaaaaaaaaaaaaaaa!");- 1Wyrażenia regularne zawsze działają w puli wątków i ją wyczerpują
- 2Metoda
testjest przestarzała - ✓Poprawna odpowiedź: Zagnieżdżone kwantyfikatory powodują katastrofalny backtracking, więc dopasowanie trwa wykładniczo długo dla pewnych danych
Wyjaśnienie
Wyrażenie działa w głównym wątku, więc jedno żądanie może zamrozić cały serwer. Unikaj zagnieżdżonych kwantyfikatorów, ograniczaj długość danych albo użyj silnika o liniowym czasie, jak RE2.