SQL injection nədir, necə işləyir, qarşısını necə almaq olar?
SQL injection verilənlər bazası infrastrukturu olan bütün sistemlərdə ən çox yayılmış kibertəhlükəsizlik təhlükəsidir. Əgər belə bir infrastrukturunuz varsa, mütləq lazımi tədbirləri görməlisiniz.Təşkilatınızın məlumatlarını qorumaq və korporativ məlumatların bütövlüyünü təmin etmək üçün siz infrastrukturunuzu bu zəifliyə qarşı qorumalısınız.
ABŞ-da Açıq Veb Tətbiq Təhlükəsizliyi Layihəsi (OWASP) Fondu hər il kibertəhlükəsizlik təhdidlərinin ilk 10 siyahısını dərc edir. 2020-ci ildə üçüncü yerdə qərarlaşan SQL injection veb-sayt təhlükəsizliyi zəiflikləri arasında ən çox seçilən kiberhücum üsullarından biridir.
SQL Injection Nədir?
SQL Injection nə olduğunu soruşsanız, veb proqram tərəfindən edilən SQL sorğusuna müdaxilə edərək verilənlər bazasındakı məlumatlara icazəsiz daxil olmaq üsuluna cavab uyğun olacaq. Bu zəiflik əks halda görmək mümkün olmayan məlumatlara baxmaq imkanı verir.
Müştəri sistemə daxil olduqda istifadəçi adı və şifrəni verir və giriş əldə edir. Bu icazə yalnız öz məlumatlarınızı görməyə icazə verir. SQL injection metodunda isə təcavüzkar digər istifadəçilərə və veb proqramın digər məlumatlarına daxil ola bilər. Buradakı SQL injection zəifliyi ilə təcavüzkar məlumatları ötürə, dəyişdirə və silə bilər. Başqa sözlə, o, daxil olduğu bütün məlumatları manipulyasiya edə bilir.
Veb əsaslı tətbiqlərdə qarşılaşdığımız bu zəiflik məlumat oğrularının istifadə etdiyi ən əsas üsullardan biridir. Vebsaytda hər hansı bir formanı doldurarkən arxa fonda SQL sorğusu verilənlər bazasına ötürülür. Burada verilənlər bazası ilə əlaqə qurulur. Qısa zamanda qeyd olunacaq təhlükəsizlik tədbirləri görülməzsə, verilənlər bazası eyni rabitə kanalından fərqli SQL sorğusu ilə manipulyasiyaya açıq olur. SQL injection zəifliyi adlanan bu halda məlumatlarınız asanlıqla başqa yerə ötürülür.
Mövzunu daha yaxşı başa düşmək üçün SQL nədir sualının cavabını öyrənərək davam edə bilərsiniz. SQL Strukturlaşdırılmış Sorğu Dilinin baş hərflərindən ibarətdir. Türk dilində strukturlaşdırılmış sorğu dili olan SQL; MySQL, MSSQL, Oracle kimi verilənlər bazalarından məlumat çıxarmağa və emal etməyə kömək edən sorğu dilidir. Beləliklə, verilənlər bazası cədvəllərində mövcud olan məlumatlar haqqında başa düşülən məlumat əldə edirsiniz. Bundan əlavə, mövcud məlumatlara dəyişikliklər edirsiniz.
Məsələn, sistemdə qeydiyyatdan keçmiş müştərinin mobil telefon nömrəsini öyrənmək üçün veb proqrama daxil olduğunuz zaman arxa planda mobil telefon məlumatı üçün verilənlər bazasında SQL sorğusu işləyir. SQL sayəsində verilənlərin nə olduğu, verilənlərin daxil-çıxışı və verilənlərdən mənalı məlumatların çıxarılması əməliyyatları asanlıqla həyata keçirilə bilər.
SQL injection necə işləyir
SQL injection metodu vebsaytınızda ictimaiyyətə təqdim olunan giriş, əlaqə kimi formalarda təsirli olur. Yanlış və ya natamam kodlaşdırma ilə formalara daxil edilmiş mətn və ya sorğu sətirinin əcnəbi tərəfindən verilənlər bazasına icazəsiz daxil olmasını təmin edir. Veb saytınızdakı bu cür formalar belə bir hücuma qarşı həssasdır. Bu səhifələrin təhlükəsizliyinə diqqət yetirməlisiniz. Bu səhifələrdəki ən kiçik zəiflik şirkətiniz üçün geri dönməz məlumat pozuntularına səbəb ola bilər.
2020-ci ildə milyonlarla üzvü olan pulsuz şəkil fondu olan Frepik istifadəçilərinin məlumatları SQL injection haker üsulu ilə oğurlanıb. Şirkət 8 milyon istifadəçinin məlumatlarının oğurlandığını, təxminən 3,5 milyon istifadəçinin parollarının da məlumatlar arasında olduğunu bildirdi. İstər KOBİ, istərsə də korporativ şirkət olsanız belə, belə bir vəziyyətlə qarşılaşmaq istərdinizmi?
SQL injection nümunə sorğuları ilə bu problemi daha yaxşı başa düşə bilərsiniz. Deyək ki, istifadəçi adı və şifrə ilə girişi təmin edən proqrama giriş səhifəniz var. Fərz edək ki, istifadəçi proqrama “orxan.135” parolu ilə yanaşı “orxan” istifadəçi adı ilə daxil olur. Bu halda, proqram aşağıdakı sorğunu verərsə və düzgün cavabı alarsa, istifadəçiyə daxil olmağa imkan verəcək.
SELECT * FROM users WHERE users=’orxan’AND password=’1234’
Xaker parol sorğusunu bu sorğudan silməklə daxil olmağa çalışır. Bu yolla verilənlər bazasına sızmağa çalışır. Əgər aşağıdakı sorğu ilə giriş ekranında POST sorğusunu redaktə edib göndərirsə, o, administrator rolu ilə verilənlər bazasına daxil olacaq.
SELECT * FROM users WHERE users=’administrator’- -‘ AND password=”
Siz bu kimi digər SQL injection nümunə sorğuları etməklə məlumat pozuntuları ilə üzləşə bilərsiniz. Məsələn, e-ticarət saytında süzgəcdən keçirərkən aşağıdakılara bənzər sorğu qaytarılır.
SELECT * FROM mehsullar WHERE category =’Telefon’
Xaker bu xətanın yanına UNION əmrini əlavə etməklə müxtəlif cədvəllərdən məlumatları çıxarmağa çalışır.
UNION SELECT users, password FROM users- –
Göründüyü kimi, veb tətbiqinizdə SQL injection zəifliyi varsa, sistemdə saxlanılan istifadəçi adları, parollar və digər şəxsi məlumatlara bu yolla asanlıqla daxil olmaq mümkün olacaq.
SQL Injection qarşısını necə almaq olar?
2017-ci ilin noyabrından 2019-cu ilin martına qədər firewall şirkətlərinin İT departamentlərində toplanan məlumatlara görə, hər üç kiber hücumdan ikisinin SQL injection metoduna aid olduğu görülür. Xakerlərin ən çox seçdiyi bu hücuma qarşı bəzi tədbirlər görmək mümkündür. SQL Injection qarşısını necə almaq olar sualına cavab budur:
1. Fiziki qurğular (PC,SERVER,SWITCH,FIREWALL ) və.s da daxil olmaqla, informasiya texnologiyaları infrastrukturunuzdakı bütün proqram təminatının yeni olduğundan əmin olun.
2. Veb tətbiqinizdəki bütün formalarda mən robot deyiləm əlavə edilməldir.
3. Tətbiqlərinizdən istifadə edənlərinizə iki faktorla daxil olmağa məcbur edin.
4. Veb proqramında şübhəli sorğuları və sorğuları təhlil edə bilən veb-əsaslı firewall (WAF) proqramını quraşdırın
5. Proqramınızın arxa fonda sorğularını nəzərdən keçirin. Refaktor sorğuları, xüsusən də NULL simvolları olan sorğular.
6. Sisteminizdəki qeydiyyatda olan istifadəçiləri nəzərdən keçirin. Admin və tam səlahiyyətli rollardakı istifadəçi adlarında ‘administrator’, ‘admin’, ‘administrator’ kimi Qeydiyyat olan istifadəçiləri deaktiv edin. Həmçinin, səlahiyyətli rolda olan istifadəçi adlarının həqiqi adlar və ya proqram adları olduğundan əmin olun.
7. İstifadə olunan sorğu sətirinin birləşmə üsulu tətbiqi sürətli etmək üçün həmişə yaxşı fikir olmaya bilər. Bu sətir birləşmələrindən mümkün qədər çəkinin və ya belə sorğuları icazələr bağlayın.
8. İT infrastrukturunuzda edilən bütün sorğuların mərkəzi logların yığıldığı verilənlər bazasında toplayın. Şübhəli əməliyyatlar üçün ani həyəcan siqnalını təyin edin və səlahiyyətli istifadəçiyə e-poçt göndərin.
9. Siz digər kiber təhdidlərlə birlikdə İT infrastrukturunuzu dərhal izləyə bilərsiniz.
10. Fərdi Məlumatların Qorunması Qanunu və Qanun çərçivəsində digər kibertəhlükələrlə birlikdə İT infrastrukturunuzu anında izləyə, tək ekrandan təhlükəsizlik konfiqurasiyaları edə və məlumatlarınızı qoruya biləcəyiniz Berqnet firewall cihazından istifadə edin.