Eine Anwendung sollte niemals davon ausgehen, dass irgendetwas in der Nutzerumgebung vernünftig ist. Das beinhaltet (ist aber sicher nicht darauf beschränkt): Nutzereingaben, Signale, Umgebungsvariablen, Ressourcen, IPC, mmaps, das Arbeitsverzeichnis im Dateisystem, Dateideskriptoren, die Anzahl geöffneter Dateien, etc..
Sie sollten niemals annehmen, dass Sie jede Art von inkorrekten Eingaben abfangen können, die ein Nutzer machen kann. Stattdessen sollte Ihre Anwendung positive Filterung verwenden, um nur eine bestimmte Teilmenge an Eingaben zuzulassen, die Sie für sicher halten. Ungeeignete Datenüberprüfung ist die Ursache vieler Exploits, besonders für CGI-Skripte im Internet. Bei Dateinamen müssen Sie besonders vorsichtig sein, wenn es sich um Pfade ("../", "/"), symbolische Verknüpfungen und Shell-Escape-Sequenzen handelt.
Perl bietet eine wirklich coole Funktion, den sogenannten "Taint"-Modus, der verwendet
werden kann, um zu verhindern, dass Skripte Daten, die von außerhalb des Programmes
stammen, auf unsichere Art und Weise verwenden. Dieser Modus überprüft
Kommandozeilenargumente, Umgebungsvariablen, Lokalisierungsinformationen, die Ergebnisse
von Systemaufrufen (readdir()
, readlink()
, getpwxxx()
) und alle
Dateieingaben.
Zurück | Zum Anfang | Weiter |
Die Umgebung ihrer Programme einschränken | Nach oben | Race-Conditions |
Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an
<[email protected]>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an <[email protected]>.