XSS' den Korunma PDF Yazdır E-posta
Bilgisayar - Ipuçları
Yazar Erdem Degirmenci   
Cumartesi, 06 Haziran 2009 14:28
XSS'ten korunmanın en iyi yolu gelen tüm bilgilerin doğrulanması ve giden bilgilerinde şifrelenmesidir. Buna 'whilelist' (beyazliste) combinasyonu denir. Doğrulama atakların tespitine izin verir ve herhangi bir script injection'ında tarayıcı tarafından girilmesini engeller.
 
 
  • Input Validation: Standart girdi doğrulama mekanizmasıdır. Tüm girdilerin uzunluklarını, tiplerini, syntax'larını ve kabul edilmeden veya gösterilmeden önceki kurallarıdır. Bu doğrulamada 'accept known good' doğrulama stratejisini kullanın. Geçersiz girdileri kabul etmeyin fakat hata mesajlarınında hatalı bilgiler döndürebileceğini unutmayın.
  • Strong Input Encoding: Güçlü girdi şifrelemedir. Tüm kullanıcı bilgilerini sifreleyerek garanti altına alın.
  • XSS kütüphanesi ve OWASP PHP Anti-XSS Kütüphanesi: Bunu kesinlikle kullanın. Bunun yanında tüm çıktı sayfalarının karakterlerinide şifreleyin. Bu ve üstte bahsettiğim Strong Input Encoding bircok varyasyonu engeller ve güvenli kılar.
  • Çıktı şifrelemenizi özelleştirin. ISO 8859-1 veya UTF 8 gibi. Saldırganın bunu kullanıcılarınız için seçmesini engelleyin.
  • Girdi veya çıktılardaki şifreleme için 'blacklist' (karaliste) doğrulaması kullanmayın. Arama için ve bazı karakterleri değiştirme konusunda zayıftır ve değişime izin verirse saldırı başarılı olur.
  • (Örnek olarak '>' ile '<' bu karakterlerin değiştirilmesine izin vermeyin.) '<b>' taglarını kontrol edin, bunlar bazen güvensiz bilgiler içerebilir. Blacklist doğrulamasını geçen çok sayıda varyasyon bulunmaktadır. Bu nedenle kullanmayın.
  • Standart hatalara çok dikkat edin. Girdiler decode yapılmalıdır yani şifreleri çözülmelidir. Uygulamanızın 2 aynı girdinin decode'larını içermediğinden emin olun. Bazı hatalar whitelist'lere bypass yapılmasını sağlar ve saldırgan'a tehlikeli girdiler hakkında bilgi verebilir.
 
Java kullanıcıları için öneriler:

Strust output mekanizması kullanın. Yani <bean:write ..> veya varsayılan JSTL escapeXML="true" attribute'unu <c:out ...> olarak kullanın. <%= ...%> kesinlikle kullanmayın.
.Net kullanıcıları için öneriler:
Microsoft'un geliştirdiği ve son derece iyi bir çalışma olan Anti-XSS kütüphanesini kullanın. MSDN'de ücretsiz sürümü bulunmakta. Herhangi bir alan için istekte bulunmayın. Yani Request object: username.Text = Request.QueryString("username"); gibi istekler yazmayın. Yazmak zorunda iseniz bu kütüphaneyi kullanarak yazın.
Php kullanıcıları için öneriler:
htmlentities() veya htmlspecialchars() üzerinden outpuların geçtiğinden emin olun. Ya da OWASP Anti-XSS kütüphanesini kullanın. register_globals'ı pasif yapın.
Yorumlar
Yeni Ekle Ara
Yorum yaz
Adiniz:
E-posta:
 
Web Sayfas1:
Baslik:
UBB Kodu:
[b] [i] [u] [url] [quote] [code] [img] 
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
Lutfen resimdeki guvenlik kodunu giriniz.

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

 
mod_vvisit_counterBugun76
mod_vvisit_counterDun150
mod_vvisit_counterBu Hafta506
mod_vvisit_counterBu Ay1495
mod_vvisit_counterToplam37947
Free PageRank Checker Webmaster