sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB $regex-fråga och potentiella utnyttjande

Min ganska personliga magkänsla säger:Bry dig inte. Men om du ändå gör det eller till och med måste så kommer här några förslag på hur du ska hantera detta krav:

  1. Du kan definiera en maximal tid som en fråga får köras för att använda maxTimeMS() .
  2. Du kan försöka sanera regex-indata men jag tvivlar på att det finns bibliotek där ute som skulle hjälpa dig med det med tanke på de oändliga variationerna av potentiellt långvariga komplexa frågor. Att begränsa längden på ett regex kan också hjälpa, men å andra sidan motverkar förmodligen syftet att tillåta en användare att enkelt söka med godtyckliga filter.
  3. Du kan tillhandahålla mer strukturerad frågeinmatning som t.ex. tillåt bara en användare att skriva in en enda alfanumerisk text som du sedan skulle slå in i ett regex på serversidan för att tillåta t.ex. "börjar-med", "innehåller" eller "slutar-med" frågor eller något.
  4. Du kan bara tillåta en enstaka parallell fråga per användare (session? ip?), vilket förmodligen skulle hjälpa lite mot dödliga DoS-attacker men absolut inte mot distribuerade... Eller så kan du till och med tillåta endast ett enda parallellt anrop av det slutpunkt över hela systemet.



  1. Mirth anslut till mongo db-anslutning

  2. Hur extraherar du en tidsstämpel från ett MongoDB ObjectId i Spring Data MongoDB?

  3. Redis Hash-paginering

  4. mongodb mapreduce scope - ReferenceError