Hallo Thorsten, hallo Leute, Am Donnerstag, 26. Juni 2003 15:21 schrieb Thorsten Körner:
Am Donnerstag, 26. Juni 2003 15:10 schrieb Jensen, Gerard: [...]
Mit "registerglobals = off" kann ich zwar über
$scriptvariable = HTTP_GET_VARS['formularvariable'];
Hier sollte man, wenn man schon mit dem Problem konfrontiert neu beginnen muss, lieber gleich auf $_GET, $_POST, $_COOKIE etc. zugreifen, weil HTTP_GET_VARS etc pp. IMHO schon sehr bald nicht mehr unterstützt werden. Dann hat man das Problem wieder von Neuem. Die neuen Arrays gibt es parrallel schon seit 4.1, sollten also überall verfügbar sein.
Und wie lange funktioniert $_GET usw? ;-) Ich hab für das Webinterface der Fontlinge eine kleine Funktion gebastelt, die das ganze kapselt und sogar ein Fallback auf globale Variablen enthält - somit läuft das Fontlinge WebGUI auch mit PHP 4.0, falls jemand noch sowas hat ;-) Dieser Fallback dürfte nichtmal ein Sicherheitsproblem für neuere PHP-Versionen sein, da dort $_GET AFAIK immer definiert ist. <?php function safeget ($param) { # import URL params from $_GET # If the wanted param was not given, there will be no error message # (E_NOTICE level). In this case, this function will return an empty # string. $retval=""; # import from $_GET if (isset($_GET["$param"])) $retval=$_GET["$param"]; # compatibility code for PHP 4.0 (and older) global $$param; if ( ! isset($_GET) && isset($$param)) $retval=$$param; return $retval; } # end safeget() ?> Die Funktion wird ähnlich verwendet wie $_GET. Statt $myvar = $_GET['irgendwas'] schreibt man eben $myvar = safeget('irgendwas')
Ein Freibrief für "sichere" Scripte ist das dabei allerdings nicht - es verhindert lediglich das Überschreiben von scriptinternen Variablen, nicht aber Probleme wie sie z.B. durch gezielt manipulierte Daten auftreten können (Session hijacking, absolute Pfad/Dateinamen etc.).
FULLACK. Ein sehr wichtiger Hinweis.
Gleich noch ein recht nützlicher Tip: in der php.ini [1] error_reporting = E_ALL statt error_reporting = E_ALL & ~E_NOTICE eintragen, dann werden z. B. uninitialisierte Variablen und Array-Elemente gemeldet. Das hat gleich mehrere Vorteile: - Vertipper in Variablennamen fallen sofort auf - mögliche Sicherheitslücken durch nicht initialisierte globale Variablen fallen ebenfalls auf - die könnten eine Angriffsfläche für Angreifer sein, was ja in diesem Thread schon oft genug diskutiert wurde. - ehemals durch register_globals importierte Variablen fallen sofort auf, man spart sich das Suchen ;-) Oder kurz gesagt: error_reporting = E_ALL - das "use warnings" für PHP ;-) Übrigens: meine safeget-Funktion verursacht _absichtlich_ _keine Warnung_, falls ein Parameter nicht an die URL angehängt wurde, sondern liefert in diesem Fall einen Leerstring zurück. Wer unbedingt einen Hinweis sehen will, sollte das if (isset($_GET["$param"])) streichen ;-) Gruß Christian Boltz [1] oder in der httpd.conf (gern auch für einen <VirtualHost> oder (ungetestet) für ein <Directory>) php_value error_reporting "E_ALL" php_value register_globals Off -- Aus der Beschreibung entnehme ich, daß deine Fonts nach Typ 3 konvertiert werden (Finger im Hals) und deine Bilder auf Screen- Qualität (Fuß zum Finger dazusteck...) [Ratti in suse-linux]