Situatie
Atacurile de tip SQL injection se produc prin inserarea de linii de cod rau-intentionate in vederea executiei ulterioare de catre baza de date vizata. Aceste atacuri exploateaza, de exemplu, vulnerabilitatea aplicatiilor SQL pe web – formulare completate online – care urmaresc colectarea/stergerea informatiilor din bazele de date sau blocarea accesului utilizatorilor legitimi, cu drepturi de acces (fenomen cunoscut ca Denial-of-Service sau DoS) .
Solutie
Lucrul care permite injectarea de cod SQL este acceptarea de date de intrare (input) nefiltrate in nici un fel.
Unde este posibil, putem programa aplicatia SQL sa ignore caracterele speciale ( ‘ ” ; — ) din datele inserate de useri. In acest caz eliminam posibilitatea uzului indreptatit al acestor caractere, deci trebuie gandit bine daca impactul acestei reguli este acceptabil.
Solutia cel mai des adoptata este neconcatenarea datelor introduse cu codul aplicatiei SQL. Exemplu din Perl:
my $user_input = ‘something the user entered’;
my $sth = $dbh->prepare(‘select email from users where email = ?’);
$sth->bind_param(1, $user_input);
$sth->execute;
Inlocuim ultimele doua declaratii cu:
$sth->execute($user_input); si astfel evitam concatenarea.
Leave A Comment?