Laravel ve PHP uygulama güvenliği üzerine beşinci makale. Bu yazıda XSS saldırılarını (Cross-Site Scripting) ele alacağız.
XSS Nedir?
XSS, saldırganın kötü niyetli JavaScript kodunu bir web sayfasına enjekte ettiği bir saldırı türüdür. Diğer kullanıcılar bu sayfayı görüntülediğinde, enjekte edilen kod tarayıcılarında çalışır.
XSS Türleri
XSS’nin üç ana türü vardır:
- Reflected XSS: Kötü niyetli kod, mevcut HTTP isteğinden gelir, genellikle bir URL parametresi aracılığıyla.
- Stored XSS: Kötü niyetli kod, veritabanına kaydedilir ve etkilenen sayfayı ziyaret eden her kullanıcıya gösterilir. Bu tür en tehlikeli olanıdır çünkü hiçbir etkileşim gerektirmez.
- DOM-based XSS: Bu tür saldırılarda sunucu tarafındaki kod, kötü niyetli yükü hiç işleyemez çünkü saldırı tamamen istemci tarafında JavaScript ile gerçekleştirilir.
Laravel Blade Şablonları
Laravel, Blade adında bir şablon motoru kullanır. Blade, HTML şablonlarınızda değişkenleri iki farklı şekilde çıkarmanızı sağlar.
{{ $comment }}Güvenli bir yöntem olan bu şekilde, Blade, içerik HTML olarak kodlar ve olası XSS saldırılarını engeller.
Tehlikeli olan yöntem ise:
{!! $comment !!}Bu yöntem, değişkenin raw HTML içeriğini olduğu gibi gösterir ve eğer kullanıcıdan gelen bir script varsa çalıştırır.
XSS Önleme Kontrol Listesi
- Her zaman kullanıcıdan gelen içerikler için {{ }} kullanın, asla {!! !!} kullanmayın.
- Veri girişi sırasında doğrulama ve sanitizasyon yapın, ancak bu önleyici tedbir değildir.
- URL’lerde kullanıcı kontrolündeki girdilerin geçerliliğini kontrol edin.
- İçerik Güvenliği Politikası (CSP) başlığını ekleyin. Bu, XSS saldırılarının etkisini sınırlayacaktır.
Sonuç
Prevention (önlemek) her zaman öncelik olmalıdır, detection (tespit) ise güvenlik için ikinci bir katman olarak kullanılır. Bu makaledeki bilgiler, Laravel uygulamalarınızda XSS saldırılarına karşı nasıl koruma sağlayacağınızı anlamanıza yardımcı olacaktır.
Kaynak: Orijinal Makale


