sql >> Databáze >  >> NoSQL >> MongoDB

Prevence vkládání JavaScriptu NoSQL v MongoDB

Sushantova odpověď není správná. potřebujete abyste si byli vědomi injekce NoSQL v MongoDB.

Příklad (převzato odtud)

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

Pokud req.params.password je { $ne: 1 } , uživatel bude načten bez znalosti hesla ($ne znamená nerovná se 1 ).

Ovladač MongoDB

Můžete použít mongo-sanitize:

Odstraní všechny klíče, které začínají na '$' ve vstupu, takže je můžete předat MongoDB, aniž byste se museli starat o přepsání škodlivých uživatelů.

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

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

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

Ovladač Mongoose

Jak vyplývá ze schématu, pokud heslo je pole řetězce, převede objekt { $ne: 1 } navléknout a nedojde k žádnému poškození. V tomto případě nemusíte dezinfikovat, jen nezapomeňte nastavit správné schéma.



  1. Získejte hodnoty podle vzoru klíče v StackExchange.Redis

  2. Nové funkce pro správu záloh a zabezpečení pro MySQL a PostgreSQL:ClusterControl Release 1.6.2

  3. Jak hledat hash klíče v redis?

  4. Jak na to:Použijte rozhraní HBase Thrift, Část 2:Vkládání/získávání řádků