SQL Injection Nedir, Nasıl Çalışır, Nasıl Engellenir?
SQL injection, veri tabanı altyapısına sahip tüm sistemlerde en yaygın görülen siber güvenlik tehdididir. Böyle bir altyapıya sahipseniz mutlaka gerekli önlemleri almalısınız.

Kurumunuza ait veriyi korumak, kurumsal verinin bütünlüğünü sağlamak için altyapınızı bu zafiyete karşı korumalısınız.
ABD’de bulunan Açık Web Uygulama Güvenliği Projesi (OWASP) Vakfı tarafından her sene siber güvenlik tehdidi olarak yılın top 10 listesi yayımlanmaktadır. 2020 yılında üçüncü sırada listelenen SQL injection, web sitesi güvenlik açıkları arasında saldırganların en çok tercih ettiği siber saldırı yöntemlerinden biridir.
SQL Injection Nedir?
SQL injection nedir diye soracak olursanız, web uygulamasının yaptığı SQL sorgusuna müdahale edilerek veri tabanında bulunan verilere yetkisiz erişme yöntemi cevabı uygun olacaktır. Bu güvenlik açığı, normalde görülmesi imkânsız verilerin görüntülenmesine izin verir.
Bir müşteri sisteme girerken kendi kullanıcı adı ve şifresini vererek, giriş izni alır. Bu izin sadece kendi verilerini görmeye yetki verir. SQL injection yönteminde ise bir saldırgan bununla birlikte diğer kullanıcıların ve web uygulamasının diğer verilerine erişebilir. Buradaki SQL injection açığı ile saldırgan verileri transfer edebilir, değiştirebilir, silebilir. Yani eriştiği tüm verileri manipüle edebilir hale gelir.
Web tabanlı uygulamalarda karşımıza çıkan bu güvenlik açığı, veri hırsızlarının başvurduğu en temel yöntemlerden biridir. Bir web sitesinde herhangi bir form doldururken, arka planda veri tabanına bir SQL sorgusu iletilir. Burada veri tabanı ile bir iletişim sağlanır. Birazdan bahsedilecek güvenlik önlemleri alınmamış ise aynı iletişim kanalından farklı bir SQL sorgusu ile veri tabanı manipülasyona açık hale gelmiş olur. SQL injection açığı denilen bu durumda kolaylıkla verileriniz başka yere transfer edilir.
Konuyu daha iyi anlamak için SQL nedir sorusunun cevabını öğrenerek devam edebilirsiniz. SQL, Structured Query Language kelimelerinin baş harflerinden oluşur. Türkçe ifadesiyle yapılandırılmış sorgu dili olan SQL; MySQL, MSSQL, Oracle gibi veri tabanlarından veri çekmeye ve işlemeye yardımcı olan bir sorgulama dilidir. Bu sayede veri tabanı tablolarında var olan veri hakkında anlaşılır bilgiler elde edersiniz. Bunun yanında mevcut veride değişiklik yaparsınız.
Örneğin, bir müşterinin sistemde kayıtlı cep telefonu numarasını öğrenmek için web uygulamasına giriş yaptığınızda, arka planda cep telefonu bilgisi için veri tabanında SQL sorgusu çalışır. SQL sayesinde verinin ne olduğu, veri giriş-çıkışı, veriden anlamlı bilgiler üretme işlemleri kolaylıkla yapılmış olur.
SQL Injection Nasıl Çalışır?
SQL injection yöntemi, web sitenizdeki herkese açık olarak sunulan giriş, iletişim gibi formlarda etkilidir. Kodlaması yanlış ya da eksik yapılan formlarda girilen bir metnin veya sorgu dizisinin, yabancı birisi tarafından veri tabanına yetkisiz erişim imkânı sağlar. Web sitenizde bulunan bu tarz formlar bu şekilde bir saldırıya açıktır. Bu sayfaların güvenliğini önemsemelisiniz. Bu sayfalardaki en ufak bir zafiyet, şirketiniz için geri dönülemez veri ihlallerine sebep olabilir.
2020 yılında milyonlarca üyesi olan ücretsiz resim stok sitesi Frepik kullanıcılarının verileri SQL injection hack yöntemiyle çalındı. Şirket 8 milyon kullanıcının verilerinin çalındığını, verilerin arasında yaklaşık 3,5 milyon kullanıcının şifresinin olduğunu bildirdi. KOBİ ya da kurumsal bir firma olun, böyle bir durum yaşamak ister misiniz?
Bu konuyu SQL injection örnek sorgular ile daha iyi anlayabilirsiniz. Kullanıcı adı ve şifre ile oturum açması sağlanan bir uygulama giriş sayfanız var diyelim. Burada bir kullanıcının “ahmet” kullanıcı adı ile birlikte “ahm.135” şifresini kullanarak uygulamaya giriş yaptığını varsayın. Bu durumda uygulama aşağıdaki sorguyu sorup, doğru cevap alırsa kullanıcıya giriş izni verir.
Bir hacker, bu sorgudaki parola sorgusunu kaldırarak giriş yapmayı dener. Bu şekilde veri tabanına sızma girişiminde bulunur. Oturum açma ekranındaki POST isteğini aşağıdaki sorguyla düzenleyip gönderirse veri tabanına yönetici rolüyle erişir.
Buna benzer başka SQL injection örnek sorguları da yapılarak veri ihlalleri ile karşı karşıya kalabilirsiniz. Örneğin bir e-ticaret sitenizde filtreleme esnasında aşağıdakine benzer bir sorgu döner.
Saldırgan bu sorgunun yanına UNION komutunu ekleyerek farklı tablolardan veri çekmeye çalışır.
Gördüğünüz gibi web uygulamanızda SQL injection açığı varsa sistemde kayıtlı kullanıcı adları, şifreler ve diğer kişisel veriler bu şekilde kolay bir şekilde erişime açık olur.
SQL Injection Nasıl Engellenir?
Firewall şirketlerinin IT departmanlarında Kasım 2017 ila Mart 2019 arasında toplanan verilere göre her üç siber saldırıdan ikisinin SQL injection yöntemine ait olduğu görülüyor. Hackerların en çok tercih ettiği bu saldırı karşısında bir takım önlemler almanız mümkün. İşte karşınızda SQL injection nasıl engellenir sorusunun cevabı:
- Bilgi teknolojileri altyapınızda fiziksel cihazlarınkiler dâhil tüm yazılımların güncel olmasına dikkat edin.
- Web uygulamanızdaki tüm formlarda ben robot değilim doğrulamasını sağlayın.
- Uygulama kullanıcılarına çift faktörlü giriş yapmalarını zorlayın.
- Web uygulaması üzerinde gerçekleşen şüpheli sorguları ve istekleri analiz edebilen web tabanlı bir firewall (WAF) yazılımını devreye alın.
- Uygulamanızın arka planda sorduğu soruları gözden geçirin. Özellikle NULL karakterlerin yer aldığı sorguları tekrar düzenleyin.
- Sisteminizdeki kullanıcıları gözden geçirin. Yönetici ve tam yetkili rolündeki kullanıcı adlarında ‘administrator’, ‘admin’, ‘yönetici’ gibi akla gelebilecek kullanıcıları devre dışı bırakın. Ayrıca yetkili rolündeki kullanıcı adlarının gerçek isim veya uygulama ismi olmasına dikkat edin.
- Uygulamanın hızlı olması için kullanılan sorgu dizesi birleştirme yöntemi her zaman iyi fikir olmayabilir. Mümkün mertebe bu dize birleştirmelerden uzak durun veya bu sorguyu yetkiye bağlayın.
- IT altyapınız üzerinde yapılan tüm hareketleri merkezi log toplama veri tabanında toplayın. Şüpheli işlemler için anlık alarm tanımlayın ve yetkili kullanıcıya e-posta gönderimi sağlayın.
- Diğer siber tehditlerle beraber IT altyapınızı anlık monitör edebileceğiniz, güvenlik yapılandırmalarını tek bir ekrandan yapabileceğiniz, bunun yanında Kişisel Verileri Koruma Kanunu ve 5651 sayılı Kanun kapsamında verilerinizi koruyabileceğiniz Berqnet firewall cihazını kullanın.
Web Sitesi Açıklarına Genel Bakış
Siber güvenlik şirketlerinin yaptığı araştırmalarda web sitelerinde bilinen belli başlı açıklar olduğu anlaşılıyor. Web sitelerinin veya web tabanlı çalışan uygulamaların zafiyetlere açık olması kurumsal verilerin her an çalınabileceği riskini ortaya koyuyor. SQL injection açığı konusunu detaylı bir şekilde okudunuz. Gelin diğer en yaygın 4 adet web sitesi açıklarına genel bakış atın:
- Bozuk erişim kontrolü, en yaygın web sitesi açıklarından biridir. Bir kullanıcının yetkisi olmadığı halde hassas verinin olduğu sayfaya erişmesi sonucu gerçekleşen güvenlik açığıdır. Bozuk erişim kontrolüaçığını tespit eden hackerlar, web sitenizin verilerine erişmek için çok beklemeyecektir.
- Şifreleme hataları, hem kullanıcılara hem de yöneticilere bakan yönü vardır. Kullanıcılar, şifrelerini oluştururken kolay, tahmin edilebilir şifre tercih edebiliyorlar. Bu da kullanıcı seviyesinde veri ihlaline neden olur. Diğer taraftan sisteme kaydedilen şifre, kredi kartı bilgileri gibi hassas verilerin açık bir şekilde saklanması da web uygulamasını zafiyete açık hale getirir. Olası bir veri ihlalinde hassas verilerin erişilmesi zararı daha da artırır.
- Güvensiz tasarım sahibi web siteleri de saldırganların değerlendirebileceği açıklar arasından yer alır. Tasarımdaki güvenlik eksiklikleri diğer web sitesi açıklarını da gün yüzüne çıkarır.
- Yanlış güvenlik yapılandırmasıkaynaklı web açıkları, web sitelerini ve uygulamaları güvensiz hâle getirir. Web uygulamanızın altyapısındaki güncel olmayan yazılımlar, web tabanlı güvenlik duvarının eksik yapılandırılması, DDOS korumasının etkin olmaması gibi birçok sebep yanlış güvenlik yapılandırması açığının oluşmasına sebep olacaktır.
Şirket olarak çalışanlarınıza, müşterilerinize değer verdiğinizi göstermek istersiniz. Bunun için ürünlerinizde kalite, çalışma koşullarında iyileştirme gibi konularda adımlar atarsınız. Ayrıca size emanet ettikleri kişisel verilerinin güvende olduğunu düşünmeleri ve bu şekilde olduğunu görmeleri verilen hizmeti daha da değerli hissettirecektir. Bu açıdan her şirket için özel çözümler sunan, şirketinizin verilerini güncel siber tehditlere karşı etkin koruma yapan, KVKK’ya ve 5651 sayılı Kanun’a uyumlu Berqnet firewall cihazı, web ve uygulama filtreleme özellikleri ile SQL injection ve diğer web sitesi açıklarına karşı kurumsal verilerinizi korur. Saldırganlara karşı bir adım önde olmak için ürün hakkında bilgi alabilir, demo talep edebilirsiniz.
Sıkça Sorulan Sorular
SQL injection, veri tabanı altyapısının bulunduğu tüm sistemlerde sıklıkla görülen bir siber güvenlik tehdidi olarak tanımlanır. Siber saldırı düzenleyen kişiler tarafından en çok tercih edilen yöntemlerden biri SQL injection’dır.
SQL injection bir güvenlik açığıdır. Burada web uygulamasında yapılan SQL sorgusuna müdahale edilir ve veri tabanında bulunan verilere yetki dışı erişim sağlanır. Örneğin, bir müşteri sisteme giriş sağlamak için kendi kullanıcı adı ve şifresini girmek durumundadır. Bu şekilde girdiği sistemde yalnızca kendine ait bilgilere erişimi sağlayabilir. Ancak SQL injection yöntemi ile bir saldırgan, pek çok farklı kullanıcının kişisel bilgilerine ve web uygulamasına dair diğer verilere erişim sağlayabilir. Burada meydana gelen SQL injection açığı sayesinde siber saldırı düzenleyen kişiler, verileri diledikleri gibi kullanabilir, farklı bir yere aktarabilir, silebilir ya da değiştirebilir.
SQL aslen “Structured Query Language” ifadesinin kısaltması olarak kullanılır. Türkçe karşılığı ise Yapılandırılmış Sorgu Dili olarak çevrilebilir. SQL, veri yönetimi yapabilmek amacıyla tercih edilen bir dildir. Bu dilin kullanılması yoluyla yönetilen pek çok farklı türde veri tabanı mevcuttur. SQL dilinin kullanılması ile elde edilen komutlar sayesinde veri tabanına yeni verileri ekleyebilir, mevcut olanları silebilir ya da değiştirebilirsiniz. Bunların yanında bu verilerden özel listeler elde edebilmeniz de mümkün olur.
Veri sistemlerinin gelişmesi sonucu bu verileri yönetebilme ihtiyacı SQL dilinin doğmasına sebep olmuştur. Başta matematiksel bir dizilim olarak Square karşınıza çıkar. Sonraki süreçte ise bu dil geliştirilmiş ve Sequel kullanılmaya başlanmıştır. Tüm bu dillerin son hali olarak ise SQL ortaya çıkmıştır.
Büyük çaplı verilerin kolay ve güvenilir şekilde yönetilebilmesi amacı ile SQL dili kullanılır. Bu dili kullanarak tablo olarak karşılaştığınız verileri sorgulama esnekliğine sahip olabilirsiniz. SQL kullanarak veri tabanında sorgu yürütme yoluyla verileri alabilir, veri tabanına kayıt ekleyebilir, burada yer alan kayıtları silebilir ya da güncelleyebilirsiniz.
Bir veri tabanında yeni tablolar elde edebileceğiniz gibi burada yeni veri tabanları da oluşturabilirsiniz. Günümüzde kullanılan açık kaynaklı veri tabanları SQL ile çalışmaktadır. Kurumsal işletmelerin çoğu SQL dili kullanılarak hazırlanan veri tabanlarını tercih etmektedir.
SQL dilinin temel kullanım alanı veri tabanıdır. Bu dili kullanarak kişiler veri tabanında saklanan verilerin işlenmesini sağlar. Verilerin modellenmesinde görev alan SQL dili farklı pek çok veri tabanında kullanılır. SQL dilinin kullanıldığı veri tabanı örnekleri aşağıdaki gibidir:
- Oracle
- MySQL
- Progress
- IBM DB2
- IBM Informix
- Microsoft SQL Server
- Sybase
- Microsoft Access
- Firebird
- PostgreSQL