sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur farlig är en mongo-fråga som matas direkt från en URL-frågesträng?

När det gäller att injektion är ett problem, som med SQL, är risken betydligt lägre... om än teoretiskt möjlig via en okänd attackvektor.

Datastrukturerna och protokollet är binära och API-drivna snarare än att utnyttja escaped värden inom ett domänspecifikt språk. I grund och botten kan du inte bara lura tolken att lägga till en ";db.dropCollection()" i slutet.

Om det bara används för frågor är det förmodligen bra... men jag vill ändå varna dig för att använda en liten bit av validering:

  • Se till att endast alfanumeriska tecken (filtrera eller ogiltigförklara nollor och allt annat som du normalt inte skulle acceptera)
  • Tvinga en maxlängd (som 255 tecken) per term
  • Tillämpa en maxlängd för hela frågan
  • Strip special parameternamn som börjar med "$", som "$where" och liknande
  • Tillåt inte kapslade arrayer/dokument/hashar... bara strängar och ints

Tänk också på att en tom fråga returnerar allt. Du kanske vill ha en gräns för det returvärdet. :)



  1. Filtrera array med $in-operatorn i $projektstadiet

  2. MongoDB:java.lang.IllegalStateException:tillståndet ska vara:öppet

  3. Finns det något sätt att få en specifik nyckel att lokalisera på en specifik redis-instans i klusterläge?

  4. MongoDB-schema för att lagra användarens platshistorik