SQL inyeksiya: necə işləyir və necə tam qarşısını almaq olar
·8 dəq oxu·SQLi · verilənlər bazası · OWASP
SQL inyeksiya onilliklərdir mövcuddur, çünki səbəb texniki deyil, memarlıqla bağlıdır: istifadəçi məlumatı sorğu mətninə birləşdirildikdə məlumat əmrə çevrilir.
Yeganə düzgün həll: parametrli sorğular
// Yanlış — string birləşdirmə
const q = "SELECT * FROM users WHERE email = '" + email + "'";
// Doğru — parametr
const { rows } = await db.query(
"SELECT * FROM users WHERE email = $1",
[email],
);Dərinlikdə müdafiə
- Tətbiqin baza istifadəçisinə yalnız lazım olan cədvəllərə giriş verin
- DDL (DROP, ALTER) səlahiyyətlərini tətbiq hesabından silin
- Sorğu xətalarını istifadəçiyə göstərməyin — onlar sxem haqqında məlumat sızdırır
- ORM istifadə edirsinizsə, xam SQL yazdığınız yerləri ayrıca nəzərdən keçirin