Ergebnis 1 bis 6 von 6

Thema: Sicherheit: Input slashen u. register_globals killen

  1. #1
    QCO
    QCO ist offline
    TP-Senior
    Registriert seit
    Mar 2003
    Ort
    Leipzig
    Beiträge
    133

    Sicherheit: Input slashen u. register_globals killen

    Folgender Code am Anfang eines Script sollte alle an das Script übergebenen Daten sicher machen, indem ggf. addslashes verwendet wird. Damit wird SQL-Injektion unmöglich. Zusätzlich werden, falls register_globals aktiviert ist, diese Variablen gelöscht.
    PHP-Code:
    if( !@get_magic_quotes_gpc() )
    {
        
    $vars = array(
            array(&
    $HTTP_GET_VARS, &$_GET),
            array(&
    $HTTP_POST_VARS, &$_POST),
            array(&
    $HTTP_COOKIE_VARS, &$_COOKIE),
            array(&
    $HTTP_POST_FILES, &$_FILES),
            array(&
    $HTTP_SESSION_VARS, &$_SESSION)
        );

        for(
    $i 0$i<count($vars); $i++)
        {
            if( 
    is_array($vars[$i][0]) )
            {
                while( list(
    $k$v) = each($vars[$i][0]) )
                {
                    if( 
    is_array($vars[$i][0][$k]) )
                    {
                        while( list(
    $k2$v2) = each($vars[$i][0][$k]) )
                        {
                            
    $vars[$i][0][$k][$k2] = addslashes($v2);
                        }
                        @
    reset($vars[$i][0][$k]);
                    }
                    else
                    {
                        
    $vars[$i][0][$k] = addslashes($v);
                    }
                }
                @
    reset($vars[$i][0]);

                
    $vars[$i][1] = $vars[$i][0];
            }
        }

        unset(
    $vars);
    }

    if( (@
    get_cfg_var('register_globals') == true) || (@get_cfg_var('register_globals') === false) )
    {
        if( 
    is_array($_REQUEST) )
        {
            while( list(
    $k$v) = each($_REQUEST) )
            {
                unset($
    $k);
            }
        }

    [httpsmog]
    "I have not failed. I've just found 10,000 ways that won't work." - Thomas Alva Edison (1847-1931)

  2. #2
    TP-Specialist Avatar von Stuck Mojo
    Registriert seit
    Feb 2001
    Ort
    Helmstedt/Wolfsburg
    Beiträge
    4.108
    Das mit dem magic_quotes isn bissel zu kompliziert, oder?
    Ich benutze das hier:
    PHP-Code:
       function my_magic_quotes(&$var$quotes true) {
          foreach(
    $var AS $key => $value) {
             if (
    is_array($var[$key])) {
                 
    my_magic_quotes($var[$key],$quotes);
             } else {
                 if(
    get_magic_quotes_gpc() && !$quotes) {
                    
    $var[$key] = stripslashes($var[$key]);
                 } else if (!
    get_magic_quotes_gpc() && $quotes) {
                    
    $var[$key] = addslashes($var[$key]);
                 }
             }
          }
       } 
    -> http://php3.de/manual/en/function.ge...quotes-gpc.php ...bei den User-Comments. Allerdings hab ichs nochn bissel ausgebaut. Einfach das Array übergeben und fertisch

    Gruss
    Jan

  3. #3
    QCO
    QCO ist offline
    TP-Senior
    Registriert seit
    Mar 2003
    Ort
    Leipzig
    Beiträge
    133
    wieso ist das kompliziert? einmal inlcluden und fertig.
    mir ging es einfach darum mit einem script alle eventualitäten zu erschlagen.
    [httpsmog]
    "I have not failed. I've just found 10,000 ways that won't work." - Thomas Alva Edison (1847-1931)

  4. #4
    TP-Specialist Avatar von Stuck Mojo
    Registriert seit
    Feb 2001
    Ort
    Helmstedt/Wolfsburg
    Beiträge
    4.108
    Naja... das Anwenden nicht aber das Script ansich... so wie ich das sehe arbeitet dein Script nicht rekursiv, sondern du gehst manuell nur bis in die 2te Array-Ebene. Mit einer rekursiven Funktion ist man da besser bedient.

    Eine andere Frage, die sich auftut ist die, ob man Session-Daten auch mit Slashes versehen sollte?? Wozu? Spätestens nach dem 2ten Seitenausfruf wären die Daten doch schon "zugeslashed" ... Jeder Aufruf escaped jeden Slash...

    Genau das gleiche gilt für $_FILES... da hatte vor einer Weile mal jemand ne Frage zu gestellt (warst du das nicht sogar?)... ob die Daten auch durch magic_quotes escaped werden. Ich konnte es aber bisher auch noch nicht ausprobieren.

    Gruss
    Jan

  5. #5
    QCO
    QCO ist offline
    TP-Senior
    Registriert seit
    Mar 2003
    Ort
    Leipzig
    Beiträge
    133
    ok, das mit den sessions ist richtig. ich hatte damit zwar noch keine probleme aber ggf. werden die wohl mehrfach geslashed.
    das gilt aber nicht für $_FILES, denn das wird nicht über mehrere seiten 'mitgeschleppt'. $_FILES besteht aber überwiegend aus daten, die vom browser des users kommen. warum sollen die also nicht auch manipulierbar sein?
    [httpsmog]
    "I have not failed. I've just found 10,000 ways that won't work." - Thomas Alva Edison (1847-1931)

  6. #6
    TP-Specialist Avatar von Stuck Mojo
    Registriert seit
    Feb 2001
    Ort
    Helmstedt/Wolfsburg
    Beiträge
    4.108
    wie gesagt... mit Files bin ich mir nicht sicher, da ichs auch noch nicht probiert habe diese zu manipulieren...

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51