sql >> Databasteknik >  >> RDS >> Mysql

Måste jag skydda mig mot SQL-injektion om jag använde en rullgardinsmeny?

Ja, du måste skydda dig mot detta.

Låt mig visa dig varför, med hjälp av Firefoxs utvecklarkonsol:

Om du inte rensar denna data kommer din databas att förstöras. (Detta kanske inte är en helt giltig SQL-sats, men jag hoppas att jag har förstått min poäng.)

Bara för att du har begränsat vilka alternativ som är tillgängliga i din rullgardinsmeny betyder det inte du har begränsat vilken data jag kan skicka till din server.

Om du försökte begränsa detta ytterligare genom att använda beteendet på din sida, inkluderar mina alternativ att inaktivera det beteendet, eller att bara skriva en anpassad HTTP-förfrågan till din server som imiterar denna formulärinlämning ändå. Det finns ett verktyg som heter curl används för just det, och jag tror kommandot för att skicka in denna SQL-injektion ändå skulle se ut ungefär så här:

curl --data "size=%27%29%3B%20DROP%20TABLE%20*%3B%20--"  http://www.example.com/profile/save

(Detta kanske inte är ett helt giltigt curl-kommando, men återigen, jag hoppas att jag har förstått min poäng.)

Så jag upprepar:

Lita ALDRIG på användarinmatning. Skydda dig ALLTID.

Anta inte att någon användarinmatning någonsin är säker. Det är potentiellt osäkert även om det kommer på något annat sätt än ett formulär. Inget av det är någonsin tillräckligt pålitligt för att avstå från att skydda dig från SQL-injektion.



  1. Avancerad SQL:Infoga utdata från den parameteriserade tabellvärderade funktionen i SQL-tabellen

  2. Problem med att skapa främmande nyckel i Oracle

  3. WAMP/MySQL-fel är inte på korrekt språk

  4. Exportera specifika rader från en PostgreSQL-tabell som INSERT SQL-skript