Regex klobasa ki zazna XSS
5 naročnikov
5 naročnikov
Ima kdo kaj uporabnega za sharat?
Rad bi obdržal samo tage za bold, italic, br in linke. Pa še to brez raznih (onload="blala" onmouseover,...)
hvala mojstri ;)
10 odgovorov
če kaj pomaga, PHP-Fusion ima to zaščito
if ((preg_match("/<[^>]*script*\"?[^>]*>/i", $check_url)) || (preg_match("/<[^>]*object*\"?[^>]*>/i", $check_url)) ||
(preg_match("/<[^>]*iframe*\"?[^>]*>/i", $check_url)) || (preg_match("/<[^>]*applet*\"?[^>]*>/i", $check_url)) ||
(preg_match("/<[^>]*meta*\"?[^>]*>/i", $check_url)) || (preg_match("/<[^>]*style*\"?[^>]*>/i", $check_url)) ||
(preg_match("/<[^>]*form*\"?[^>]*>/i", $check_url)) || (preg_match("/\([^>]*\"?[^)]*\)/i", $check_url))) {
$return = true;
}
DiTi, za nekaj je dobro, ampak tole gre čez
<IMG SRC=http://www.google.si/images/logos/ps_logo2.png onload=javascript:alert('XSS')>
Obstaja kakšna bulletproof zadeva ali bo treba it na roke čez morje XSS primerov in sproti dopolnjevat regex?
Ok, prišel sem do spoznanja, popravite me če se motim.
- bolje je narediti whitelist namesto blacklista (izbrati kaj dovoliti namesto kaj prepovedati)
- potrebno je sparsati HTML v DOM in preveriti vsak element ali so njegovi atributi v whitelisti in preveriti je treba tudi vrednosti dovoljenih atributov (prepovedati nedovoljene protokole npr. href=javascript...)
pa lep večer še naprej in čimmanj XSS-ov ;)
Vem da je glupo na lastne poste odgovarjat, ampak tole moram prilepit
http://htmlpurifier.org/
Jaz delam z CodeIgniter in predlagam, da si ga downloadaš, pregledaš in skopiraš ta del iz Input razreda (/system/libraries/) in morda popraviš po tvojih željah.
blackmamba:
DiTi, za nekaj je dobro, ampak tole gre čez<IMG SRC=http://www.google.si/images/logos/ps_logo2.png onload=javascript:alert('XSS')>
Obstaja kakšna bulletproof zadeva ali bo treba it na roke čez morje XSS primerov in sproti dopolnjevat regex?
mogoče veš kako je zakodirani tisti onload javascript del?
To je "Long UTF-8 Unicode encoding without semicolons", kodo sem našel tu http://ha.ckers.org/xss.html
Drugače sem pa s "htmlpurifier" več kot zadovoljen in se z xss ne obremenjujem več :P
hvala, še en uporaben seznam: http://code.google.com/p/wfuzz/source/browse/trunk/wordlist/Injections/?r=2
Ja seveda 100x lazje je narediti whitelist kot pa blacklist...priporocam ti da prvo uporabis regex, ki bo dobil npr vsebino znotraj <i> & </i> in potem vsebino znotraj tagov se filtriras z html entities in bi moral biti problem resen..
Drugace pa ce govoriva za XSS pri iskanju je najbolje da za iskanje uporabis POST namesto GET, ker potem napadalec nima koristi za razne redirecte ali cookie stealerje...
Ce se gre pa za forum pa le previdno, da se ne bo kak HTML injection pojavil na tvoji strani :)