global $user_ID; if($user_ID) { if(!current_user_can('administrator')) { if (strlen($_SERVER['REQUEST_URI']) > 255 || stripos($_SERVER['REQUEST_URI'], "eval(") || stripos($_SERVER['REQUEST_URI'], "CONCAT") || stripos($_SERVER['REQUEST_URI'], "UNION+SELECT") || stripos($_SERVER['REQUEST_URI'], "base64")) { @header("HTTP/1.1 414 Request-URI Too Long"); @header("Status: 414 Request-URI Too Long"); @header("Connection: Close"); @exit; } } }
Diese Funktion prüft, ob der Benutzer, der die Website besucht, ein Administrator ist. Wenn der Benutzer kein Administrator ist, wird die Länge der aktuellen URL überprüft. Wenn die Länge größer als 255 ist oder bestimmte Zeichenfolgen wie “eval(“, “CONCAT”, “UNION+SELECT” oder “base64” in der URL enthalten sind, wird eine HTTP-Fehlermeldung mit dem Code 414 Request-URI Too Long zurückgegeben und die Verbindung wird geschlossen.
Die Funktion verwendet die globalen Variablen $user_ID und $_SERVER[‘REQUEST_URI’]. Wenn $user_ID existiert, wird geprüft, ob der Benutzer kein Administrator ist, indem die Funktion current_user_can(‘administrator’) aufgerufen wird. Wenn diese Bedingung erfüllt ist, wird die Länge der aktuellen URL mit strlen($_SERVER[‘REQUEST_URI’]) überprüft. Wenn die Länge größer als 255 ist oder bestimmte Zeichenfolgen in der URL enthalten sind, wird eine HTTP-Fehlermeldung zurückgegeben und die Verbindung wird geschlossen.
Die Funktion verwendet die PHP-Funktionen stripos() und @header() zum Überprüfen der URL-Länge und zum Senden der HTTP-Fehlermeldung. stripos() sucht nach einer Zeichenfolge in einer anderen Zeichenfolge, ohne auf Groß- und Kleinschreibung zu achten. @header() wird verwendet, um HTTP-Header zu senden, einschließlich des Statuscodes und der Fehlermeldung. Das @-Symbol vor der Funktion unterdrückt alle Fehlermeldungen, die von der Funktion generiert werden.