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

Ngăn chặn JavaScript NoSQL Injection trong MongoDB

Câu trả lời của Sushant không đúng. Bạn cần để biết về việc chèn NoSQL trong MongoDB.

Ví dụ (lấy từ đây)

User.findOne({
    "name" : req.params.name, 
    "password" : req.params.password
}, callback); 

Nếu req.params.password{ $ne: 1 } , người dùng sẽ được truy xuất mà không cần biết mật khẩu ($ne có nghĩa là không bằng 1 ).

Trình điều khiển MongoDB

Bạn có thể sử dụng mongo-sanitize:

Nó sẽ loại bỏ bất kỳ khóa nào bắt đầu bằng '$' trong đầu vào, vì vậy bạn có thể chuyển nó sang MongoDB mà không phải lo lắng về việc ghi đè người dùng độc hại.

var sanitize = require('mongo-sanitize');

var name = sanitize(req.params.name);
var password = sanitize(req.params.password);

User.findOne({
    "name" : name, 
    "password" : password
}, callback); 

Trình điều khiển Mongoose

Vì nó tuân theo một lược đồ, nếu mật khẩu là một trường chuỗi, nó sẽ chuyển đổi đối tượng { $ne: 1 } để xâu chuỗi và không có thiệt hại nào được thực hiện. Trong trường hợp này, bạn không cần phải làm sạch, chỉ cần nhớ đặt một lược đồ thích hợp.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Truy vấn Mongodb Để chọn các bản ghi có một khóa nhất định

  2. Làm cách nào để tìm giao điểm tập hợp của các tập hợp giữa các tài liệu trong một tập hợp duy nhất trong MongoDB?

  3. Làm thế nào để một người đại diện cho các trường MongoDB GeoJSON trong một giản đồ Mongoose?

  4. Mongoose với mongodb làm thế nào để trả về đối tượng vừa lưu?

  5. Ký tự khoảng trắng trong MongoDB