MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Zapobieganie wstrzykiwaniu JavaScript NoSQL w MongoDB

Odpowiedź Sushanta jest nieprawidłowa. potrzebujesz być świadomym wstrzyknięcia NoSQL w MongoDB.

Przykład (zaczerpnięte stąd)

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

Jeśli req.params.password to { $ne: 1 } , użytkownik zostanie pobrany bez znajomości hasła ($ne oznacza nie równa się 1 ).

Sterownik MongoDB

Możesz użyć mongo-sanitize:

Usunie wszystkie klucze zaczynające się od „$” w danych wejściowych, dzięki czemu możesz przekazać je do MongoDB bez obaw o nadpisanie przez złośliwych użytkowników.

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

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

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

Kierowca Mongoose

Zgodnie ze schematem, jeśli hasło jest polem tekstowym, skonwertuje obiekt { $ne: 1 } do sznurka i żadne szkody nie zostaną wyrządzone. W takim przypadku nie musisz czyścić, pamiętaj tylko o ustawieniu odpowiedniego schematu.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Zgodność sterownika mongodb 3.x z systemem Android

  2. Korzystanie z przechowywanych funkcji JavaScript w potoku agregacji, MapReduce lub runCommand

  3. Filtry tablicy Mongodb 3.6.0-rc3 nie działają?

  4. Uzyskaj całkowitą liczbę dokumentów w MongoDB podczas korzystania z limitu

  5. Azure Function z integracją Cosmos MongoDB nie oszczędza