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

Jak nebezpečný je dotaz mongo, který je napájen přímo z řetězce dotazu adresy URL?

Pokud jde o problém s injekcí, jako u SQL, riziko je výrazně nižší... i když teoreticky možné prostřednictvím neznámého vektoru útoku.

Datové struktury a protokol jsou binární a řízené API, spíše než aby využívaly uniklé hodnoty v rámci jazyka specifického pro doménu. V zásadě nemůžete jen oklamat analyzátor, aby na konec přidal ";db.dropCollection()".

Pokud se používá pouze pro dotazy, je to pravděpodobně v pořádku... ale přesto bych vás varoval, abyste použili malý kousek ověření:

  • Zajistěte pouze alfanumerické znaky (filtrujte nebo zrušte platnost hodnot null a cokoli jiného, ​​co byste normálně nepřijali)
  • Vynutit maximální délku (např. 255 znaků) na termín
  • Vynutit maximální délku celého dotazu
  • Strip speciální názvy parametrů začínající na „$“, jako „$ kde“ a podobně
  • Nepovolovat vnořená pole/dokumenty/hash... pouze řetězce a ints

Také mějte na paměti, že prázdný dotaz vrátí vše. Možná budete chtít limit na tuto návratovou hodnotu. :)



  1. MongoDB se po pádu serveru nespustí

  2. Windows MongoDB – nainstalovaný kompas, ale v systému nelze kompas najít

  3. Přesuňte prvek z jednoho pole do druhého v rámci stejného dokumentu MongoDB

  4. Export MySQL do MongoDB