XSS (Cross-site Scripting) Zafiyeti Nedir?
Kaba yorum ile; web uygulamasında açığın meydana geldiği input/inject point (veri girişi) alanına gönderilen kötü niyetli javascript kodlarının, kullanıcının web tarayıcısında çalıştırıldığı bir saldırı türüdür. Yani Client-Side (kullanıcı taraflı) bir saldırıdır.URL adreslerindeki query stringler ve form alanlarında sıklıkla görülür.
Phishing saldırılarına zemin oluşturur.
Genellikle POST ve GET metotlarının kullanıldığı alanlarda olur.
Çeşitleri:
Reflected (Yansıyan), Stored (Depolanan) ve Dom-based olarak üç çeşittir.
Reflected XSS
Stored XSS
Etkileri:
Yazılım betiklerinin kullanıcı tarafında çalıştırılması sonucunda kullanıcının oturum bilgileri çalınabilir, web tarayıcısı (browser) ele geçirilebilir veya bilgisayarına zararlı kodlar enjekte edilerek ve bilgisayar yönetimi ele geçirilebilir...
XSS Zafiyeti Nasıl Oluşur?
Temel olarak web uygulamada kullanıcının veri girişi yaptığı alanlarda meta-karakterlerin filtrelenmemesinden kaynaklanmaktdır.XSS Zafiyetine Nasıl Önlem Alınabilir?
- Web uygulamalarında kullanıcının veri girişine izin verilen alanlarda filtreleme yaparak bu açıkları kapatabilirsiniz. Veri girişinin filtrelenmesi kadar veri çıkışının da incelenmesi web uygulamalarının güvenliğini arttıracaktır. Aşağıda belirtilen karakterlerin filtrelenmesi web uygulamaların güvenliğini sağlayacaktır:
['],[<],[>],[;],[/],[?],[=],[&],[#],[%],[{],[}],[|],[@],[\],["]Ayrıca bu tür karakterlerin gerektiği ortamlarda, girilen verinin encode edilmesi gerekebilir. NOT: Eğer uygulanabiliyorsa filtrelemelerde BlackList yerine WhiteList kullanılması daha güvenli olacaktır.
- Çerezlerin güvenli hale getirilmesi web uygulamalarının güvenliğini arttırmak adına yapılabilecek en önemli işlemlerdendir. Çerezler içinde kullanıcı adı, şifre ve oturum durumunun saklanmasından kaçınılmalıdır. Eğer tutulması gerekiyorsa şifreli olarak tutulması tercih edilmelidir.
- Çerezlere “httponly” set edilmelidir.
- Donanımsal/Yazılımsal Web Application Firewall (WAF) ile web uygulamasında varolan bir zafiyetin saldırgan tarafından keşfedilme aşamasını zorlaştırıp, loglayıp, bloklayabilirsiniz.
- Belirli periyotlarda içeriden ve dışarıdan web uygulama güvenlik testleri (penetrasyon testi) yaptırarak güvenlik açıklarının keşfi ve önlem alınması sisteminizi daha güvenli kılacaktır.