sql >> Database teknologi >  >> RDS >> Mysql

Skal jeg beskytte mig mod SQL-injektion, hvis jeg brugte en dropdown?

Ja, du skal beskytte dig mod dette.

Lad mig vise dig hvorfor, ved hjælp af Firefoxs udviklerkonsol:

Hvis du ikke renser disse data, vil din database blive ødelagt. (Dette er måske ikke en fuldstændig gyldig SQL-sætning, men jeg håber, jeg har fået min pointe igennem.)

Bare fordi du har begrænset, hvilke muligheder der er tilgængelige i din dropdown, betyder det ikke du har begrænset de data, jeg kan sende til din server.

Hvis du forsøgte at begrænse dette yderligere ved at bruge adfærd på din side, inkluderer mine muligheder at deaktivere denne adfærd eller bare skrive en tilpasset HTTP-anmodning til din server, som alligevel efterligner denne formularindsendelse. Der er et værktøj kaldet curl brugt til netop det, og jeg tror kommandoen til at sende denne SQL-injektion alligevel ville se nogenlunde sådan ud:

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

(Dette er måske ikke en helt gyldig curl-kommando, men igen, jeg håber, at jeg har fået min pointe igennem.)

Så jeg gentager:

Stol ALDRIG på brugerinput. Beskyt ALTID dig selv.

Antag ikke, at brugerinput nogensinde er sikkert. Det er potentielt usikkert, selvom det ankommer via andre måder end en formular. Intet af det er nogensinde troværdigt nok til at give afkald på at beskytte dig selv mod SQL-injektion.



  1. Hvordan IsFinite() virker i PostgreSQL

  2. GRUPPER EFTER med MAX(DATE)

  3. Hvordan trunkerer du alle tabeller i en database ved hjælp af TSQL?

  4. Meddelelse om den generelle tilgængelighed af SQL Compliance Manager 5.9