Säubert die Inhalte im POST-Array
Autor: Ralf v.d.Mark, Varsamis Karamanidis (Macky)
eingetragen: Donnerstag, 06. September 2007 um 14:13 Uhr (36/2007 Kalenderwoche)
geändert: Mittwoch, 15. November 2023 um 08:44 Uhr (46/2023 Kalenderwoche)
Keywords: sicherheit POST array reinigen falsche Eingaben useAnyFunctionOnArrayOrString filtern
Kategorien: PHP,
Text:
Mit diesem Script wird ein POST-Array automatisch gereinigt, so das kein böser Bub die Seite hacken kann.
Zur Sicherheit wird das Array von falschen Eingaben gereinigt.
Siehe auch: Filterung oder Neutralisierung der Eingaben (Filtern), php.net/function.filter-input.php
Quellcode:
/**
* Function post_reinigen() DocBlock:
* @abstract Die Funktion saeubert die Inhalte im POST-Array
* @name post_reinigen():
* @global array $_POST
* @param keine weiteren Parameter
* @return array $_POST
* @see wird in vielen Scripten aufgerufen.
* @todo zur Zeit steht nichts an.
* @uses array $_POST
*
* @example post_reinigen();//hier werden alle POST-Variablen bereinigt!
*
* ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ */
function post_reinigen()
{
foreach($_POST as $mein_schluessel => $mein_inhalt)
{
$post_schluessel = $_POST[$mein_schluessel];//Variable zur Bearbeitung uebergeben!
if ($mein_schluessel != 'dummyfeld1'
&& $mein_schluessel != 'dummyfeld2'
//bei diesen Feldern darf HTML-Code eingegeben werden!
) {
//Entfernt HTML- u. PHP-Tags:
$post_schluessel = useAnyFunctionOnArrayOrString($post_schluessel, 'strip_tags');
}//ENDE: ... bei den 3 Feldern soll HTML-Code eingegeben werden koennen!
//Entfernt Whitespaces am Anfang + Ende
$post_schluessel = useAnyFunctionOnArrayOrString($post_schluessel, 'trim');
//Converts a string with ISO-8859-1 characters encoded with UTF-8 to single-byte ISO-8859-1
//$post_schluessel = useAnyFunctionOnArrayOrString($post_schluessel, 'utf8_decode');
//alle Suchbegriffe klein schreiben:
//$post_schluessel = useAnyFunctionOnArrayOrString($post_schluessel, 'strtolower');
//Ausserdem werden noch alle Schraegstriche entfernt:
$post_schluessel = useAnyFunctionOnArrayOrString($post_schluessel, 'stripcslashes');
//... und schliesslich werden alle Doppelten Anfuehrungsstriche...
//$post_schluessel = str_replace('"', '\"', $post_schluessel);
//$post_schluessel = str_replace('"', '"', $post_schluessel);
//Der Wert wird nicht mehr wiedererkannt um die SelBox zu selecten
$_POST[$mein_schluessel] = $post_schluessel;//Variable wieder zurueckuebergeben!
}//ENDE: foreach($_POST as $mein_schluessel => $mein_inhalt)
}//ENDE: function post_reinigen();//hier werden alle POST-Variablen bereinigt!
/**
* Zentrale Methode, um ALLE Werte zu bearbeiten (z. B. trim())
* auch wenn sie in einem verschachtelten Array liegen.
*
* @param string|array $varOrArray (Wert oder Array)
* @param string $anyFunction (default= trim())
*
* @return string|array (bearbeitet)
*/
function useAnyFunctionOnArrayOrString($varOrArray, $anyFunction = 'trim') {
if (!is_array($varOrArray)) {
return $anyFunction($varOrArray);
} else {
//Wenn obriges nicht zutrifft, dann...
return array_map('useAnyFunctionOnArrayOrString', $varOrArray);
}//ENDE: else ==> if ()
}//ENDE: function useAnyFunctionOnArrayOrString(...)
//Aufruf: hier werden alle POST-Variablen bereinigt!
post_reinigen();