MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Truy vấn mongo được cung cấp trực tiếp từ chuỗi truy vấn URL nguy hiểm như thế nào?

Đố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 đó. :)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Khoảng cách địa lý / bán kính MongoDB đến các đơn vị hữu ích

  2. Truyền từ con trỏ mongodb tới Phản hồi nhanh trong node.js

  3. MongoDB dường như chọn sai chỉ mục khi thực hiện tổng hợp

  4. Trong MongoDB, làm cách nào để bạn sử dụng $ set để cập nhật giá trị lồng nhau / tài liệu nhúng?

  5. Các bước cài đặt MongoDB trên Amazon Linux