Bobby Tabeller: En guide til forebyggelse af SQL-injektion

0 Comments

Hvorfor gjorde Bobby”s skole miste deres poster?

skolen gemmer tilsyneladende navnene på deres elever i en tabel kaldet studerende. Når en ny elev ankommer, sætter skolen sit navn ind i denne tabel. Koden, der udfører indsættelsen, kan se ud som følger:

den første linje opretter en streng, der indeholder en s .l INSERT-sætning. Indholdet af variablen $studentName limes ind i s .l-sætningen., Den anden linje sender den resulterende s .l-sætning til databasen. Faldgruben for denne kode er, at eksterne data, i dette tilfælde bliver indholdet af $studentName, en del af S .l-sætningen.

lad os først se, hvordan s .l-sætningen ser ud, hvis vi indsætter en studerende ved navn John:

Dette gør nøjagtigt, hvad vi vil: det indsætter John i Elevbordet.

nu indsætter vi små Bobby-tabeller ved at indstille $studentName til Robert"); DROP TABLE Students;--., S .l-sætningen bliver:

dette indsætter Robert i Elevbordet. Imidlertid efterfølges indsæt sætningen nu af en DROP TABLE-erklæring, der fjerner hele Elevtabellen. Av!

Sådan undgås Bobby Tables

Der er kun en måde at undgå Bobby Tables angreb

  • Opret ikke s .l-sætninger, der indeholder eksterne data.
  • brug parametriserede s .l-opkald.

at”s det. Don ” t forsøge at undslippe ugyldige tegn. Don ” t forsøge at gøre det selv. Lær hvordan du bruger parametriserede udsagn. Altid, hver eneste gang.,

strimlen får en ting afgørende forkert. Svaret er ikke at” desinficere dine databaseindgange ” selv. Det er tilbøjeligt til fejl.


Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *