Säubert die Inhalte im POST-Array

edit | delete

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();