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