Tuesday April 27, 2010 16:56
PHP/MySQL – Metoda de scapare de injectiile SQL
Am sa va demonstrez foarte repede cum se poate scapa de injectile SQL.
Deci, hai sa spunem ca avem un formular ca acesta este de pe index.php:
<form action="insereaza.php" method="POST"> <fieldset> <legend>Detalii<legend> <div> <label>Nume:</label> </div> <div> <input type="input" name="nume" value="Maribol" disabled="disabled" /> </div> <div> <label>Prenume:</label> </div> <div> <input type="input" name="prenume" value="Labs" disabled="disabled" /> </div> <div> <label>Email:</label> </div> <div> <input type="input" name="email" value="admin@mlabs.info" disabled="disabled" /> </div> <div style="margin-top:10px;"> <input disabled="disabled" type="submit" value="Trimite" /> </div> </fieldset> </form> |
Actiunea formularului se petrece in: insereaza.php, asa ca orice metoda folosesti POST sau GET va fi pasata catre el.
Acum, inainte ca sa inseram datele in baza de date, trebuie sa ne asiguram ca datele sunt sigure pentru inserare.
Functia PHP care ar trebui sa o folosesti este: mysql_real_escape_string.
Acum, poti trece prin aceasta functie variabilele trimise de formular. Sa zicem ca formularul are metoda:POST
<?php $_POST['nume'] = mysql_real_escape_string($_POST['nume']); $_POST['prenume'] = mysql_real_escape_string($_POST['prenume']); $_POST['email'] = mysql_real_escape_string($_POST['email']); ?> |
Dar aceasta functie nu este destul de eficienta deoarece sa presupunem ca dvs. aveti mai multe campuri la formular, iar aceasta functie trebuie repetata pentru fiecare camp.
Aici este o metoda mai buna de a “curata” campurile:
foreach(array_keys($_POST) as $cheie) { $curata[$cheie] = mysql_real_escape_string($_POST[$cheie]); } |
Iar acum toate variabilele postate sunt “curatate” de bucla foreach. Iar acum valoarea _POST a fost redenumita in $curata.
De exemplu:
echo $curata['nume']; echo $curata['prenume']; echo $curata['email']; |
- Category: Tutoriale PHP
- No Comments

