Zararlı kodlar sayfanıza sızabilir mi?
XSS (Cross-Site Scripting) saldırılarına karşı koruma sağladık. Kullanıcı girdileri otomatik olarak temizlenir, zararlı kodlar çalıştırılamaz.
Bir kişi yorum kutusuna zararlı kod yazarsa ne olur? Normal sistemlerde bu kod sayfayı ziyaret eden herkesin tarayıcısında çalışır (şifreler çalınabilir!). Biz tüm kullanıcı girdilerini filtreliyoruz: <script> yerine güvenli metin gösterilir.
Yorum, şarkı adı, playlist ismi gibi alanlar.
{{ $variable }} otomatik olarak HTML escape uygular.
<script> → <script> olarak gösterilir.
Kod çalışmaz, düz metin olarak görünür.
Kullanıcı metin girer, metin olarak gösterilir.
Zararlı kod tespit edilir, etkisiz hale getirilir.
Filtreleme arka planda çalışır, fark etmezsiniz
Diğer kullanıcıların yorumları size zarar veremez
Oturum bilgileriniz çalınamaz
Sadece güvenilir kaynaklardan script yüklenir
Kullanıcı girdileri sayfada gösterilirken sistem zararlı kodları otomatik olarak etkisizleştirir. İşte XSS korumasının teknik işleyişi:
Yorum, playlist adı veya biyografi gibi alanlara metin girilir. Kötü niyetli kullanıcı <script>alert('XSS')</script> gibi kod yazabilir.
Girdi olduğu gibi veritabanına kaydedilir. Ancak strip_tags() veya Purifier::clean() ile önceden temizlenebilir.
{{ $variable }} kullanıldığında Blade otomatik olarak htmlspecialchars() uygular. < karakteri < olur.
Zararlı kod tarayıcıda çalıştırılmaz, düz metin olarak görünür: <script>... yazısı ekranda görülür ama çalışmaz.
Content-Security-Policy header'ı ile sadece güvenilir kaynaklardan script yüklenmesine izin verilir. Inline script'ler engellenir.
Oturum cookie'leri HttpOnly flag ile işaretlenir. JavaScript ile document.cookie üzerinden erişilemez, çalınması engellenir.
(Cross-Site Scripting)
Sayfaya zararlı kod enjekte etme saldırısı. Virüs bulaştırma gibi.
(Karakter Dönüştürme)
Özel karakterleri güvenli formata çevirme. < → <
(Content Security Policy)
Hangi kaynaklardan script yüklenebileceğini belirleyen kural.
(Laravel Şablon Motoru)
Laravel'in otomatik XSS korumalı şablon sistemi.