Cảm giác ruột thịt khá cá nhân của tôi nói:Đừng bận tâm. Nhưng xin nhắc lại, nếu bạn vẫn làm hoặc thậm chí phải làm vậy thì đây là một vài gợi ý về cách đối phó với yêu cầu này:
- Bạn có thể xác định thời gian tối đa mà truy vấn có thể chạy để sử dụng maxTimeMS () .
- Bạn có thể cố gắng khử trùng đầu vào regex nhưng tôi nghi ngờ rằng có những thư viện ngoài kia có thể giúp bạn làm điều đó với vô số biến thể của các truy vấn phức tạp có khả năng chạy dài. Việc giới hạn độ dài của regex cũng có thể hữu ích nhưng mặt khác có thể làm mất đi mục đích cho phép người dùng tìm kiếm thuận tiện bằng cách sử dụng các bộ lọc tùy ý.
- Bạn có thể cung cấp đầu vào truy vấn có cấu trúc hơn, ví dụ:chỉ cho phép người dùng nhập một văn bản chữ-số duy nhất mà sau đó bạn sẽ bọc trong một biểu tượng ở phía máy chủ để cho phép, ví dụ:các truy vấn "bắt đầu bằng", "chứa" hoặc "kết thúc bằng" hoặc một số thứ gì đó.
- Bạn chỉ có thể cho phép một truy vấn song song cho mỗi người dùng (phiên? ip?), điều này có thể sẽ giúp một chút chống lại các cuộc tấn công DoS gây tử vong nhưng chắc chắn không chống lại các cuộc tấn công phân tán ... Hoặc bạn thậm chí có thể chỉ cho phép một lệnh gọi song song duy nhất của cuộc gọi đó điểm cuối trên toàn bộ hệ thống.