marți, 15 martie 2011

SQL injection

SQL injection
Una dintre cele mai grave probleme de securitate web este SQL injection. Simplu spus, este posibilitatea executarii de comenzi SQL prin alterarea parametrilor paginilor. Problema este grava pentru ca altereaza date permanent salvate in baze de date care pot varia de la caz la caz: nume, parole, date confidentiale, chiar credit carduri, etc.
SQL injection apare datorita neverificarii parametrilor utilizati in comenzi SQL.

Cum sa protejam baza de date?
  • Este indicat sa folosim useri cu privilegii limitate. Nu e indicat sa ne conectam ca superuseri sau ca alt utilizator ce poate manipula mai multe baze de date, nu numai cea in discutie.
  • Trebuie introduse functii de validare, de la cele mai simple, pe variabile, si pana la expresii regulate.
  • Pentru inputuri numerice este indicat sa folosim functia "is numeric()".
  • Pentru valori numerice putem folosi functia "string escape" specifice SGBD-ului.
  • Nu trebuie sa afisam informatii specifice bazei de date, precum schema.
  • Trebuie sa evitam posibilitatea introducerii de caractere precum: ghilimele simple, ghilimele duble, slash, backslash, punct si virgula, caractere extinse precum NULL, linie noua, etc. in toate stringurile de input pentru utilizatori, parametri in URL si valori din cookie.