XSS Saldırılarına Karşı Çıktı Kaçışlama
XSS Saldırılarına Karşı Çıktı Kaçışlama, Güvenlik alanında sıkça karşılaşılan ve doğru uygulandığında fark yaratan konulardan biri. Bu yazı konuyu 5 temel noktada ele alıyor, çalışan bir PHP örneği üzerinden ilerliyor, sonunda da uygulamada nelere dikkat edilmesi gerektiğini özetliyor.
İçindekiler
XSS Saldırılarına Karşı Çıktı Kaçışlama, Güvenlik alanında sıkça karşılaşılan ve doğru uygulandığında fark yaratan konulardan biri. Bu yazı konuyu 5 temel noktada ele alıyor, çalışan bir PHP örneği üzerinden ilerliyor, sonunda da uygulamada nelere dikkat edilmesi gerektiğini özetliyor.
XSS Saldırılarına Karşı Çıktı Kaçışlama nedir, neden önemlidir?
Siteler arası betik çalıştırma (XSS), kullanıcıdan gelen bir metnin sayfaya kaçışlanmadan basılmasıyla oluşur: yorum alanına yazılan bir betik, sayfayı açan herkesin tarayıcısında çalışır ve oturum bilgilerini çalabilir. Çözüm basittir ama her çıktı noktasında uygulanmalıdır.
Öne çıkan noktalar
- Çıktıda kaçışla: Veriyi kaydederken değil, ekrana basarken bağlama uygun biçimde kaçışlayın.
- ENT_QUOTES: Öznitelik içinde kullanılan değerlerde tek ve çift tırnak da kaçışlanmalıdır.
- JavaScript bağlamı: Betik içine veri aktarırken json_encode ve JSON_HEX_* seçeneklerini kullanın.
- Bağlantılar: Kullanıcıdan gelen adreslerde yalnızca http ve https protokolüne izin verin; javascript: adreslerini reddedin.
- CSP: Content-Security-Policy başlığı, gözden kaçan bir açığın etkisini sınırlar.
Örnek kod
Teoriyi somutlaştırmak için kısa bir PHP örneğine bakalım:
function e(?string $metin): string
{
return htmlspecialchars((string)$metin, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');
}
?>
<h2><?= e($yorum['baslik']) ?></h2>
<p><?= nl2br(e($yorum['metin'])) ?></p>
<a href="<?= e($profilUrl) ?>">Profil</a>
<script>
const kullanici = <?= json_encode($ad, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT) ?>;
</script>Örnek bilinçli olarak kısa tutuldu; gerçek projede hata yönetimi ve günlükleme gibi katmanlar eklenmelidir.
Kullanıcıdan gelen veriyi ekrana basarken htmlspecialchars() ile kaçışlamak XSS saldırılarının önüne geçer.
Size ne kazandırır?
Kısaca özetlemek gerekirse:
- Saldırı yüzeyini daraltır ve olası veri sızıntılarının önüne geçer
- Güvenlik denetimlerinden daha kolay geçen bir kod tabanı sağlar
- Hataların canlı ortama çıkmadan fark edilmesine yardım eder
- Kullanıcı güvenini ve marka itibarını korur
Özetle
XSS Saldırılarına Karşı Çıktı Kaçışlama konusunda ele aldığımız 5 nokta, günlük çalışmada en sık ihtiyaç duyulan kısmı kapsıyor. Özellikle Çıktıda kaçışla ve CSP başlıklarını uygulamaya geçirmek iyi bir başlangıç olur.
İlgili içerikler:
- Google Authenticator ile İki Adımlı Doğrulama (TOTP) Nasıl Çalışır?
- PHP PDO ile SQL Injection Koruması
- PHP ile Güvenli Dosya Yükleme: 8 Kontrol
Daha fazla uygulamalı içerik için Akademi derslerine ve blog yazılarına göz atabilirsiniz.
Yazar
Ferdi Giden @adminPHP, MySQL ve Tailwind ile kurumsal yazılımlar geliştiriyor; FerdiSoft çatısı altında ERP, WMS ve SaaS çözümleri üretiyor.