Pentru a evita o posibilă exploatare a vulnerabilităţii SQL Injection în aplicaţia web, este necesar de a prelucra toate datele ce parvin de la utilizatori la următoarele simboluri:
1. Ghilimelele atât simple cât şi duble (‘, “, `). Cu ajutorul acestora în majoritatea cazurilor se efectuează injectarea codului SQL.
2. Simbolurile de comentarii specifice SGBD anumit (/*,–). Cu ajutorul acestora poate fi omisă o parte din interogare.
3. Simbolurile ce împart instrucţiunile SQL ( ; ). Prezenţa acestui simbol permite de a forma mai multe cereri la baza de date.
4. Deasemenea datele ar trebui să fie verificate la prezenţa şi la alte simboluri (_,%,*).
5. În cazul când în cererea SQL se utilizează date numerice primite de la utilizatori, înainte de a le plasa în cererea SQL acestea ar trebui aduse la tipul numeric:
$id=(int)$id;
6. În cazul când în cererea SQL se utilizează date de tip şir de caractere primite de la utilizatori, înainte de a le plasa în cererea SQL acestea ar trebui prelucrate la simboluri speciale. Cea mai bună practică - este formarea expresiilor regulate.
Concluzii
Pentru a evita prezenţa acestei vulnerabilităţi este nevoie de a prelucra la simboluri speciale absolut toate datele ce parvin de la utilizatori. În această categorie intră parametrii GET, POST şi chiar cookie.
Sursa : link din mesajul lui Birkoff
Deci pentru inceput taie accesul utilizatorilor la situl tau pt un timp.
Pune-i sa bifeze, sa aleaga cu butoane radio etc, sa introduca text numai unde e necesar.
http://php.net/manual/en/function.htmlspecialchars.php <<
Ceea ce nu poti coda, taie!! Scoate toate semenele din string, lasa numa' cratima si punctul!!!
