Cum de a evita o injecție SQL în PHP
Cu acest ghid wikiHow veți învăța cum să evitați o injecție SQL folosind propoziții pregătite în PHP. În zilele noastre, injecțiile SQL sunt una dintre cele mai frecvente vulnerabilități ale aplicațiilor web. Instrucțiunile Ready folosesc parametrii corelați și nu combină variabilele cu șiruri SQL, ceea ce face imposibil ca un atacator să modifice o instrucțiune SQL.
Instrucțiunile pregătite combină variabilele cu instrucțiunile SQL compilate. În acest fel, instrucțiunile SQL și variabilele sunt trimise separat. Variabilele sunt apoi interpretate ca șiruri simple și nu ca parte a unei instrucțiuni SQL. Dacă se aplică metodele din etapele explicate mai jos, nu este necesar să folosiți orice alt tip de tehnică de filtrare prin injecție SQL, cum ar fi mysql_real_escape_string ().
conținut
pași
Partea 1
Înțelegeți ce este injecția SQL
$ name = $ _GET [`nume de utilizator`] - $ query = "SELECT parola din tbl_user WHERE nume = `$ name` "-
$ name = "admin `OR 1 = 1 - "- $ query = "SELECT parola din tbl_user WHERE nume = `$ name` "-
SELECT parola din tbl_users WHERE nume = `admin` SAU 1 = 1 - `
Partea 2
Utilizați mySQLi pentru a crea declarații pregătite
Utilizați codul de mai jos pentru a selecta (SELECT) datele dintr-o tabelă folosind o instrucțiune pregătită cu mySQLi.
$ nume = $ _GET [`username`] - dacă ($ stmt = $ mysqli->pregăti ("SELECTARE parolă FROM tbl_users WHERE name =?")) {// Alăturați-vă unei variabile cu parametrul ca șir $ stmt->bind_param ("s", $ name) - // Executați propoziția $ stmt->execute () - // Obțineți variabilele interogării $ stmt->bind_result ($ pass) - // Găsiți datele $ stmt->fetch () - // Afișează dataprintf ("Parola utilizatorului% s este% s n", $ name, $ pass) - // Închideți instrucțiunea pregătită $ stmt->close () -}
- Notă: variabila $ mysqli este obiectul de conectare al mySQLi.
$ nume = $ _GET [`username`] - $ password = $ _GET [`parola`] - if ($ stmt = $ mysqli->pregăti ("INSERTAȚI ÎN tbl_users (nume, parolă) VALUES (?,?)")) {// Legați variabilele la parametru ca șiruri de caractere $ stmt->bind_param ("ss", $ name, $ password) - // Executați propoziția $ stmt->execute () - // Închideți instrucțiunea pregătită $ stmt->close () -}
$ nume = $ _GET [`username`] - $ password = $ _GET [`parola`] - if ($ stmt = $ mysqli->pregăti ("UPDATE tbl_users SET parola =? WHERE nume =?")) {// Legați variabilele la parametru ca șiruri de caractere $ stmt->bind_param ("ss", $ password, $ name) - // Executa teza $ stmt->execute () - // Închideți instrucțiunea pregătită $ stmt->close () -}
$ nume = $ _GET [`username`] - $ password = $ _GET [`parola`] - if ($ stmt = $ mysqli->pregăti ("Șterge din tbl_users WHERE name =?")) {// Alăturați-vă unei variabile cu parametrul ca șir $ stmt->bind_param ("s", $ name) - // Executați propoziția $ stmt->execute () - // Închideți instrucțiunea pregătită $ stmt->close () -}
- Cum să înveți să programezi în C
- Cum se creează și se invocă funcții în PHP
- Cum să înțelegeți programarea orientată pe obiecte
- Cum se scrie un program în Java pentru a calcula media
- Cum se face un cub în OpenGL
- Cum se face un script PHP
- Cum se instalează Qt SDK în Microsoft Windows
- Cum se introduc datele în SPSS
- Cum sa faci o banda de cap de hippie
- Cum să aplicați o injecție intramusculară
- Cum se aplică o injecție B12
- Cum să aplicați o injecție
- Cum să aplicați o injecție cu Depo Provera
- Cum să injectați
- Cum să faceți față unei injecții dureroase
- Cum să nu simțiți durerea atunci când vă dau o injecție
- Cum se calculează forța gravitației
- Cum să scrieți instrucțiuni
- Cum se scrie o expresie algebrică
- Cum să găsiți circumferința și zona sau suprafața unui cerc
- Cum se multiplică polinoamele