Můj docela osobní pocit říká:Neobtěžuj se. Ale znovu, pokud to přesto uděláte nebo dokonce musíte, zde je několik návrhů, jak se s tímto požadavkem vypořádat:
- Můžete definovat maximální dobu, po kterou může dotaz běžet, pomocí maxTimeMS() .
- Mohli byste se pokusit dezinfikovat vstup regulárního výrazu, ale pochybuji, že existují knihovny, které by vám s tím pomohly, vzhledem k nekonečným variacím potenciálně dlouhotrvajících složitých dotazů. Omezení délky regulárního výrazu by také mohlo pomoci, ale na druhou stranu pravděpodobně maří účel umožnit uživateli pohodlné vyhledávání pomocí libovolných filtrů.
- Mohli byste poskytnout strukturovanější vstup dotazu, který by např. umožnit uživateli zadat pouze jeden alfanumerický text, který byste pak zabalili do regulárního výrazu na straně serveru, abyste umožnili např. "začíná-s", "obsahuje" nebo "končí" dotazy nebo tak něco.
- Mohli byste povolit pouze jeden paralelní dotaz na uživatele (relaci? ip?), což by pravděpodobně trochu pomohlo proti fatálním DoS útokům, ale rozhodně ne proti distribuovaným... Nebo byste dokonce mohli povolit pouze jediné paralelní volání tohoto koncový bod v celém systému.