PHP: $_GET-Daten-Sicherheit (XSS/SQL-Injection/Code-Injection)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP: $_GET-Daten-Sicherheit (XSS/SQL-Injection/Code-Injection)

    Hallo,

    PHP-Code:
    foreach ($_GET as $key => $val) {
       
    $val=str_replace(" """$val);  
       
    $val=str_replace("%20"""$val);
       
    $val=mysql_real_escape_string($val);
       
    $val=substr($val015); ## GETs sind auf 15 Zeichen begrenzt!
       
    $val=htmlentities($val);
       
    $_GET[$key]=$val;

    (Code ist noch nicht optimiert, soll erstmal gut lasbar sein)

    Dieses For-Each läuft durch alle GET-Einträge durch und versucht sie bestmöglich zu säuber, bzw. böse Dings um zu codieren (espacen/html-zeichen zu codieren).
    Habe ich etwas wichtiges übersehen?

    Besteht noch eine wichtige Sicherheitslücke, die ich besser schließen sollte?


    Danke für Tipps.

  • #2
    Das ist vollkommener Schwachsinn den du da betreibst.
    Man escaped für bestimmte Zwecke wofür man den Wert gerade braucht - nicht einfach mal prophylaktisch ALLE Funktionen anwenden. Das wiederum behindert nämlich dann beim vernünftigen Programmieren.
    Wenn du den Wert in einem Query verwenden willst, mysql_real_escape. Wenn du ihn ausgeben willst, htmlspecialchars.

    Probier mal einen Wert auszugeben oder in die DB einzufügen, wenn du beide Funktionen anwendest - und dann guck dir mal den Müll an der da ausgegeben wird (natürlich musst du dann auch entsprechend & und " mal benutzen, weil darauf wirken die Funktionen ja).

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      außerdem gibt es immer noch andere manipulationsmöglichkeiten. schau dir ggf. mal das hier an.

      peter
      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
      Meine Seite

      Kommentar

      Lädt...
      X