sql >> Database >  >> RDS >> Mysql

Moet ik oppassen tegen SQL-injectie als ik een dropdown gebruik?

Ja, je moet je hiertegen beschermen.

Laat me je laten zien waarom, met behulp van de ontwikkelaarsconsole van Firefox:

Als u deze gegevens niet opschoont, wordt uw database vernietigd. (Dit is misschien geen volledig geldig SQL-statement, maar ik hoop dat ik mijn punt duidelijk heb gemaakt.)

Alleen omdat je hebt beperkt welke opties beschikbaar zijn in je vervolgkeuzemenu betekent dit niet je hebt de gegevens beperkt die ik naar je server kan sturen.

Als je geprobeerd hebt dit verder te beperken door het gedrag op je pagina te gebruiken, kan ik dat gedrag uitschakelen of gewoon een aangepast HTTP-verzoek naar je server schrijven dat deze formulierinzending toch imiteert. Er is een tool genaamd curl precies daarvoor gebruikt, en ik denk het commando om deze SQL-injectie toch in te dienen zou er ongeveer zo uitzien:

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

(Dit is misschien geen volledig geldig curl-commando, maar nogmaals, ik hoop dat ik mijn punt duidelijk heb gemaakt.)

Dus ik herhaal:

Vertrouw NOOIT gebruikersinvoer. Bescherm jezelf ALTIJD.

Ga er niet vanuit dat gebruikersinvoer ooit veilig is. Het is mogelijk onveilig, zelfs als het op een andere manier dan via een formulier binnenkomt. Niets ervan is ooit betrouwbaar genoeg om jezelf te beschermen tegen SQL-injectie.



  1. Effectieve strategie voor het achterlaten van een audittrail/wijzigingsgeschiedenis voor DB-applicaties?

  2. Is er een manier om de prestaties van mysql Indexing te controleren?

  3. Hoe het 'as'-sleutelwoord te gebruiken om een ​​​​tabel in Oracle te aliasen?

  4. Hoe MAKETIME() werkt in MariaDB