tabele Bobby: un ghid pentru prevenirea injecției SQL

0 Comments

de ce școala lui Bobby și-a pierdut înregistrările?

școala stochează aparent numele elevilor lor într-un tabel numit studenți. Când sosește un elev nou, școala își introduce numele în acest tabel. Codul care face inserarea ar putea arăta după cum urmează:

prima linie creează un șir care conține o instrucțiune SQL INSERT. Conținutul variabilei $studentName este lipit în instrucțiunea SQL., A doua linie trimite instrucțiunea SQL rezultată în baza de date. Capcana acestui cod este că datele externe, în acest caz conținutul $studentName, devine parte a instrucțiunii SQL.mai întâi să vedem cum arată instrucțiunea SQL dacă introducem un student numit John:

Acest lucru face exact ceea ce ne dorim: îl introduce pe John în tabelul studenților.

acum introducem mici tabele Bobby, setând $studentNamela Robert"); DROP TABLE Students;--., Instrucțiunea SQL devine:

aceasta introduce Robert în tabelul studenților. Cu toate acestea, instrucțiunea INSERT este acum urmată de o declarație de masă DROP care elimină întreaga masă a studenților. Au!

cum să evitați tabelele Bobby

există o singură modalitate de a evita atacurile Bobby Tables

  • nu creați instrucțiuni SQL care includ date externe.
  • utilizați apeluri SQL parametrizate.

asta este. Nu încercați să scăpați de caractere nevalide. Nu încerca să o faci singur. Aflați cum să utilizați declarațiile parametrizate. Întotdeauna, de fiecare dată.,

banda devine un lucru crucial greșit. Răspunsul nu este să „igienizați intrările bazei de date”. Este predispus la eroare.


Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *