Kennt sich jemand mit Taint Checks aus?
TED116
- perl
Hallöle,
habe vor kurzem von der Möglichkeit der Taint Checks gelesen. Da ich erst Perl-Anfänger bin, wollte ich mal nachfragen, wie das genau funktioniert.
Der Aufruf erfolgt über #!/usr/local/bin/perl -wT
Alle Benutzereingaben und damit zusammenhängende Variablen werden dann "markiert", und falls diese mit Systembefehlen in Berührung kommen wird die Aktion gestoppt. OK.
Wie "säubere" ich wieder die Variablen, nachdem ich sie überprüft habe und ist diese Methode überhaupt zu empfehlen??
Grüße
TED116
Alle Benutzereingaben und damit zusammenhängende Variablen werden dann "markiert", und falls diese mit Systembefehlen in Berührung kommen wird die Aktion gestoppt. OK.
Hm, ich habe mir gerade mal die Beschreibung durchgelesen.
Die Idee ist offenbar, daß der Perl-Interpreter während der Ausführung des Skripts eine Art Datenflußanalyse macht.
Wie "säubere" ich wieder die Variablen, nachdem ich sie überprüft habe und ist diese Methode überhaupt zu empfehlen??
Diese Datenflußanalyse gilt nur für einen Lauf des Perl-Skripts. "Säubern" im Sinne von "zurücksetzen eines gespeicherten Flags" ist nicht notwendig.
Es geht vielmehr darum, das Skript ggf. so umzuschreiben, daß es auch in dem "gesicherten" Modus "-T" ohne Sauereien läuft. Also beispielsweise nicht einen Wert aus der Kommandozeile in ein Kommando kopieren, sondern diesen mit erwarteten Werten vergleichen und diese in das Kommando eintragen - die sind nicht "vergiftet".
Diesen Modus setzt man möglicherweise nur während der Entwicklungs- bzw. Testphase ein; das fertige Skript kann man - wenn man das Skript sauber genug geschrieben hat - später ohne "taint" laufen lassen. Die Datenflußanalyse kostet nämlich sicherlich Zeit und belastet somit den Server.