Siber Güvenlik: SQL Injection ve Çözümleri
Samet Karabulut
February 2, 2026
•3 min read
Siber güvenlik alanında sıklıkla karşılaştığım konulardan biri olan SQL Injection, veri tabanlarının güvenliğini tehdit eden önemli bir açıklıktır. Bu yazıyı okuyucularla paylaşıyorum, umarım SQL Injection hakkında daha fazla bilgi sahibi olmanızı sağlar.
Deneyimlerime göre, SQL Injection saldırıları genellikle web uygulamalarında xyabilir. Bir saldırgan, uygulamanın girdi alanlarına özel olarak tasarlanmış SQL komutları ekleyerek veri tabanındaki hassas bilgilere erişebilir.
SQL Injection Nedir?
SQL Injection, bir web uygulamasındaki girdi alanlarına kötü niyetli SQL kodu enjekte edilerek veri tabanını manipüle etme saldırısıdır. Bu saldırılar, uygulamanın güvenlik açıklarını kullanarak veri tabanındaki verilere erişim sağlar.
Temel SQL Injection
Temel SQL Injection, en basit saldırı türüdür. Bir saldırgan, bir web uygulamasının girdi alanlarına SQL kodu ekleyerek veri tabanındaki verilere erişim sağlar. Örneğin, bir kullanıcı adı ve parola girişi için aşağıdaki SQL kodu kullanılabilir:
SELECT * FROM users WHERE username = '$username' AND password = '$password'
Bir saldırgan, kullanıcı adı olarak ' OR 1=1 -- girdiğinde, SQL kodu aşağıdaki gibi değişir:
SELECT * FROM users WHERE username = '' OR 1=1 --' AND password = '$password'
Bu, tüm kullanıcıların listelenmesine neden olur.
Union-Based SQL Injection
Union-Based SQL Injection, bir saldırganın iki veya daha fazla SELECT ifadesini birleştirmesine olanak tanıyan bir saldırı türüdür. Bu, genellikle bir web uygulamasının girdi alanlarına özel olarak tasarlanmış SQL kodu eklenerek gerçekleştirilir.
SELECT * FROM users WHERE id = $id UNION SELECT * FROM admin
Bu example, bir saldırganın id parametresine 1 UNION SELECT * FROM admin girdiğinde, veri tabanındaki tüm kullanıcılar ve yöneticiler listelenir.
Boolean-Based SQL Injection
Boolean-Based SQL Injection, bir saldırganın veri tabanındaki verilerin varlığını veya yokluğunu belirlemesine olanak tanıyan bir saldırı türüdür. Bu, genellikle bir web uygulamasının girdi alanlarına özel olarak tasarlanmış SQL kodu eklenerek gerçekleştirilir.
SELECT * FROM users WHERE username = '$username' AND password = '$password' AND EXISTS (SELECT * FROM admin WHERE id = 1)
Bu example, bir saldırganın username parametresine admin girdiğinde, veri tabanındaki admin kullanıcısının varlığı veya yokluğu belirlenir.
Time-Based SQL Injection
Time-Based SQL Injection, bir saldırganın veri tabanındaki verilerin varlığını veya yokluğunu belirlemesine olanak tanıyan bir saldırı türüdür. Bu, genellikle bir web uygulamasının girdi alanlarına özel olarak tasarlanmış SQL kodu eklenerek gerçekleştirilir.
SELECT * FROM users WHERE username = '$username' AND password = '$password' AND SLEEP(5)
Bu example, bir saldırganın username parametresine admin girdiğinde, veri tabanındaki admin kullanıcısının varlığı veya yokluğu belirlenir ve 5 saniye beklenir.
Çözümler
SQL Injection saldırılarını önlemek için beberapa önlem alınabilir. Bunlardan bazıları:
- Veri tabanına kullanıcı girdilerini direkt olarak eklememek
- Prepared statement'ler kullanmak
- Parametreleştirilmiş sorgular kullanmak
- Veri tabanını düzenli olarak güncellemek
Bu yazıyı okuyarak, SQL Injection hakkında daha fazla bilgi sahibi olmanızı umuyorum. Siber güvenlik alanında bu tür açıkların önlenmesi için sürekli olarak çalışmalıyız.
Yorumlar
Henüz yorum yok. İlk yorumu sen yap.