9. Dezember 2014

PHP:
XSS-Attacken auf bestehenden Websites verhindern

Eine bestehende, eventuell komplexere Website nachträglich vor Cross-Site-Scripting-Attacken (XSS) zur sichern, kann sich als sehr aufwändig erweisen. Mit diesem PHP-Skript, dass bei jedem Aufruf der Website vor allen anderen Funktionen ausgeführt werden sollte, lassen sich die meisten Angriffsszenarien entschärfen.

function xss_protect($string)
{
	// nur Strings prüfen
	if(!is_string($string)) return $string;

	// eventuelle Kodierung berücksichtigen
	$string=urldecode($string);

	// Ausführbaren Code entfernen
	$string=strip_tags($string);
	$string=htmlspecialchars($string);		
	$string=filter_var($string, FILTER_SANITIZE_STRING);		

	return $string;
}
if(is_array($_GET)) $_GET = array_map("xss_protect", $_GET);
if(is_array($_POST)) $_POST = array_map("xss_protect", $_POST);
if(is_array($_REQUEST)) $_REQUEST = array_map("xss_protect", $_REQUEST);
$_SERVER['REQUEST_URI'] = array_map("xss_protect", $_SERVER['REQUEST_URI']);
$_SERVER['REDIRECT_QUERY_STRING'] = array_map("xss_protect", $_SERVER['REDIRECT_QUERY_STRING']);
$_SERVER['QUERY_STRING'] = array_map("xss_protect", $_SERVER['QUERY_STRING']);