Đối với vấn đề tiêm nhiễm, như với SQL, rủi ro thấp hơn đáng kể ... mặc dù về mặt lý thuyết là có thể xảy ra thông qua một vectơ tấn công không xác định.
Các cấu trúc dữ liệu và giao thức là nhị phân và theo hướng API thay vì tận dụng các giá trị thoát trong một ngôn ngữ cụ thể của miền. Về cơ bản, bạn không thể lừa trình phân tích cú pháp thêm "; db.dropCollection ()" vào cuối.
Nếu nó chỉ được sử dụng cho các truy vấn, có lẽ là tốt ... nhưng tôi vẫn lưu ý bạn nên sử dụng một chút xác thực:
- Đảm bảo chỉ các ký tự chữ và số (lọc hoặc làm mất hiệu lực các ký tự rỗng và bất kỳ thứ gì khác mà bạn thường không chấp nhận)
- Thực thi độ dài tối đa (như 255 ký tự) cho mỗi thuật ngữ
- Thực thi độ dài tối đa của toàn bộ truy vấn
- Dải đặc biệt tên thông số bắt đầu bằng "$", như "$ where" và tương tự
- Không cho phép các mảng / tài liệu / hàm băm lồng nhau ... chỉ các chuỗi và int
Ngoài ra, hãy nhớ rằng, một truy vấn trống sẽ trả về mọi thứ. Bạn có thể muốn có một giới hạn cho giá trị trả lại đó. :)