muenzchen: Häufige Fehler in PHP?

Hallo!

Ich wollte mal nachfragen was so die häufigsten Fehler sind, die mit PHP gemacht werden.

Zum Beispiel, dass meistens $variable statt $_GET['variable'] geschrieben wird.

Wo ist da zum Beispiel das Problem dabei?

MfG, muenzchen

  1. Hallo muenzchen,

    Ich wollte mal nachfragen was so die häufigsten Fehler sind, die mit PHP gemacht werden.

    Bei Zend gabs dazu mal die Reihe "Top 21 PHP Programming Mistakes", vielleicht
    findest Du das interessant.

    http://www.zend.com/zend/art/mistake.php
    http://www.zend.com/zend/art/mistake1.php
    http://www.zend.com/zend/art/mistake2.php

    Zum Beispiel, dass meistens $variable statt $_GET['variable'] geschrieben wird.

    Wo ist da zum Beispiel das Problem dabei?

    Das Problem dabei ist, dass $variable in diesem Fall im globalen Namensraum
    registriert ist und der User somit beim Scriptaufruf beliebig Variablen setzten kann.

    In PHP müssen Variablen ja nicht explizit deklariert werden, sondern können durch
    Wertzuweisung an beliebiger Stelle im Script erzeugt werden. Dies kann bei schlechtem
    Programmierstil zu Sicherheitslücken führen. So kann z.B. ein (böser *g*) Benutzer
    durch Variablen, die er per get oder post an das Script schickt, der Programmablauf
    beeinflussen.

    Am besten sieht man das immer an einem Beispiel...

    <?php

    if (/* User Authentication */) {
           $access = 1;   <-- $access wird erst hier initialisiert.
       }

    if ($access == 1) {
           /* irgendwas "geheimes" */
       }

    ?>

    Wenn nun der User das Script mit ?access=1 aufruft, wird auch ohne
    Durchlaufen des if-Statements die Variable $access auf 1 gesetzt,
    so dass dem Benutzer auch ohne Autorisierung Zugriff auf den geheimen
    Teil gewährt wird.

    Durch $_POST, $_GET, etc... werden nun alle Variablen, die von "außen"
    kommen in einen isolierten Namensraum verfrachtet, so dass sie keinen
    Einfluss auf das Script nehmen können.

    Wie gesagt, durch sauberes Programmieren (alle verwendeten Variablen
    sollten korrekt initalisiert werden - also einen passenden "Anfangswert"
    bekommen) lassen sich solche "Angriffe" auch ohne $_POST, etc...
    verhindern, aber sie machen das Leben um einiges leichter :)

    siehe auch: http://www.php.net/manual/en/security.registerglobals.php
    und http://www.php.net/manual/en/security.variables.php.

    Gruß,
    dimde

  2. Hallo,

    Ich wollte mal nachfragen was so die häufigsten Fehler sind, die mit PHP gemacht werden.

    Zum Beispiel, dass meistens $variable statt $_GET['variable'] geschrieben wird.

    Wo ist da zum Beispiel das Problem dabei?

    Das kann Sicherheitsprobleme verursachen. Hier mal zwei Links zu Material von O'REILLY:
    http://www.oreilly.de/artikel/php_sicherheit.html
    http://www.oreilly.de/catalog/progphpger/chapter/index.html

    MfG, Thomas