X-XSS-Protection

OWASP’ın üç senede bir yayınladığı zafiyetler listesinde yer alan XSS (Reflected) ‘e karşı önlem yöntemlerinden birinden daha bahsedeceğiz.

Cross Site Scripting (XSS) adlı yazımda XSS’in ne olduğundan bahsetmiştim. Kullanıcılarınızın (istemcilerin) sayfanızda olabilecek bir XSS zafiyetinden korumak için sunucu tarafından bazı header bilgileri isteğin cevabına eklenerek istemci tarafında bir koruma sağlanabilir. Bunlardan biri de X-XSS-Protection başlığı. Bu başlığın bize ne gibi bir faydasını olduğunu bir örnek üzerinden göstermeye çalışacağım.

Örneğin aşağıdaki gibi bir giriş formumuz olsun ve bu form’da Reflected XSS açıklığı olduğu bilinsin.

15 - X-XSS-Protection

Tarayıcılarda XSS koruması var olabilir ve bunları çeşitli ayarlarla varsayılan olarak aktif edebilir, pasif edebilirsiniz. Örneğin İnternet Explorer’da aşağıdaki gibi yapılandırabilirsiniz.

16 1 - X-XSS-Protection

Bunu tarayıcının varsayılanına bırakmamak için tarayıcıya başlık içerisinde XSS’i aktif et diyerek sunucu tarafından bu başlığı tanıyan tarayıcı da istek için xss korumasının aktif edilmesi istenilir.

Şimdide sunucumuza X-XSS-Protection başlığını aktif etmeyi görelim. Bu örnek için Apache web sunucusu kullandığımdan Apache’de bu başlığı eklemek için aşağıdaki direktiflerden biri yapılandırma dosyasına girilir.

Header set X-XSS-Protection "1; mode=block"
Header always set X-XSS-Protection "1; mode=block"

Tekrardan deneyelim isterseniz.

17 1 - X-XSS-Protection

İnternet explorer’ımızda bu özellik öncesinden disabled idi ve biz gördüğünüz gibi xss korumasını tarayıcda aktif ettirmiş olduk.

19 1 - X-XSS-Protection

Chrome’da ise XSS koruması bildiğim kadarıyla varsayılan olarak geliyor. Ancak sonradan değiştirilmişte olabilir. Firefox’da ise X-XSS-Protection başlığı denemelerimi gerçekleştirdiğim an itibariyle desteklenmemektedir.

X-XSS-Protection Seçenekleri

X-XSS-Protection: 0

XSS koruması tarayıcı tarafından aktifse dahil pasif edilir.

Örneğin Chrome’da varsayılan olarak xss koruması 1’di. Yani aktifdi. 0 yaparak Reflected XSS’in de olmasını sağladık. Chrome ile test yapanlar için ideal bir seçenek olabilir.

20 - X-XSS-Protection

X-XSS-Protection: 1

XSS koruması pasifse tarayıcı tarafından aktif edilir. Sayfa render edilmeye yani kaldığı yerden diğer elementlerin yüklenmesine devam eder.

21 1 - X-XSS-Protection

X-XSS-Protection: 1; mode=block

XSS koruması pasifse tarayıcı tarafından aktif edilir. Sayfanın render edilmesi önlenir. Yani sayfanın diğer elementlerinin yüklenmesine de izin verilmez.

19 1 - X-XSS-Protection

X-XSS-Protection: 1; report=URL

XSS koruması pasifse tarayıcı tarafından aktif edilir, ve belirtilen url adresine istek raporlanır.