XSS ve CSRF saldırıları, web uygulamalarında sıkça karşılaşılan ve ciddi sonuçlar doğurabilen güvenlik açıklarıdır. Web geliştiricilerinin bu saldırı türlerini anlamaları ve önleyici tedbirler almaları büyük önem taşır, kısaca değinmek gerekirse XSS ve CSRF hakkında birkaç noktadan bahsedelim.
XSS (Cross-Site Scripting)
XSS; saldırganın bir web uygulamasında, başka kullanıcıların tarayıcılarında çalışacak kötü niyetli JavaScript kodlarını enjekte etmesine olanak tanıyan bir güvenlik açığıdır. Bu tür saldırılar genellikle kullanıcı girdilerinin düzgün şekilde doğrulanmadığı ve filtrelenmediği durumlarda meydana gelir.
Türleri:
- Stored XSS (Depolanan XSS): Zararlı kod, bir veri tabanına veya sunucuda depolanan diğer bir kaynağa kaydedilir ve daha sonra normal kullanıcılar bu veriyi görüntülediklerinde çalıştırılır. Örneğin, bir yorum alanına zararlı bir kod enjekte edilip bu kodun diğer kullanıcılar tarafından görüntülenmesi.
- Reflected XSS (Yansıyan XSS): Zararlı kod, URL parametreleri veya formlar aracılığıyla sunucuya gönderilir ve hemen geri döner. Kullanıcı bir bağlantıya tıkladığında veya bir form gönderdiğinde zararlı kod çalışır.
- DOM-based XSS: Zararlı kod, tamamen tarayıcı tarafında gerçekleşir ve HTML veya JavaScript’in kötü niyetli bir şekilde manipüle edilmesiyle çalışır.
Önleme Yöntemleri:
- Kullanıcı girdilerini doğrulamak ve filtrelemek.
- HTML entity encode1 kullanarak kullanıcı girdilerini güvenli hale getirmek.
- Güvenli JavaScript kodlama pratikleri uygulamak.
- Content Security Policy (CSP) kullanmak.
CSRF (Cross-Site Request Forgery)
CSRF; saldırganın yetkili bir kullanıcının tarayıcısını kullanarak başka bir web sitesine istek göndermesini sağladığı bir saldırı türüdür. Bu tür saldırılarda kullanıcının oturum çerezlerini kullanarak, kullanıcının kimliğiyle yetkilendirilmiş işlemleri gerçekleştirmek hedeflenir.
Örnek: Kullanıcı bir bankacılık sitesinde oturum açmıştır ve tarayıcıda bu siteye ait çerezler bulunmaktadır. Kullanıcı daha sonra saldırganın hazırladığı bir siteye girer ve bu site, bankacılık sitesine kötü niyetli bir istek gönderir. Kullanıcı farkında olmadan kendi yetkileriyle bu isteği gerçekleştirmiş olur.
Önleme Yöntemleri:
- CSRF Tokenları: Her form gönderiminde benzersiz bir token kullanarak isteklerin doğrulanması. Bu token, sunucu tarafından oluşturulur ve sadece oturum sahibi tarafından bilinir.
- Referer Kontrolü: Gelen isteğin referer başlığını kontrol ederek, isteğin doğru bir kaynaktan geldiğini doğrulamak.
- SameSite Çerezleri: Çerezlerin sadece aynı site içerisinden gönderilmesine izin veren
SameSiteözelliğini kullanmak.
ileri okuma yapmak için linkleri ziyaret edebilirsiniz:
1- CSP Nedir?
2- Web Güvenliği Nasıl Sağlanır?
3- CSRF Token
- HTML entity encode işlemi, XSS (Cross-Site Scripting) gibi güvenlik açıklarını önlemek için gereklidir. Kullanıcı tarafından girilen veriler doğrudan HTML içeriğine dahil edildiğinde, kötü niyetli JavaScript kodlarının çalıştırılmasına neden olabilir. Bu kodlamayla tarayıcı bu girdileri zararsız metin olarak yorumlar.
Örnek Kullanım:
Kullanıcıdan alınan<script>alert('XSS');</script>şeklindeki bir giriş, doğrudan HTML içine yerleştirildiğinde bir XSS saldırısına neden olabilir. Ancak HTML entity encode kullanılarak, bu giriş aşağıdaki gibi kodlanır:
<script>alert(‘XSS’);</script>
Bu şekilde kodlandığında, tarayıcı bu girdiyi metin olarak işler ve zararlı kod çalışmaz.
↩︎
