TomIRL: Baum der Erkenntniss II

Beitrag lesen

do{
$write = fopen("datei_$i.txt", w);
fclose($write);
}while($i < 5);

Sieht doch auf den ersten Blick ganz vernünftig aus um 5 leere Textdateien zu erstellen, oder? Was passiert nun aber wenn ein besucher dieses in die Adressleiste tippt:
script.php?i=6
Genau, $i hat plötzlich den Wert 6 und die Abbruchbedingung ist unwahr. Das heisst plötzlich wird dein Script nicht mehr abbrechen und dir die ganze Festplatte mit Dateien zuschreiben

Dann doch mal dazu eine Frage für mich ist diese Variante generell nicht akzeptabel!

Das ist doch einfach nur unsauber programmiert, denn wenn ich die Variable mit  $_get[$i] "abhole hat diese doch trotzdem noch den falschen Wert?
Hat also mit register_globals erst einmal nichts zu tun!?
Oder würrde mit $get[$i] überprüft ob die Variable tatsächlich von einem Skript auf kommt und wenn könnte ich ja die Variable von einem beliebigen Server abschicken?

Viele Grüße TomIRL

Bsp B)
Du hasst folgendes Script für einen Login:
if($pw == $pw_aus_db){
$eingeloggt = 1;
}

if($eingeloggt == 1){
lass_den_user_rein();
}

Auch das sieht auf den ersten blick nicht unvernünftig aus. Es sei denn jemand ruft dein Script mit script.php?eingeloggt=1 auf...

Und schon ist er ohne irgendwelche Passwörter eingeloggt.

Solche Beispiele gibt es tausendfach und ich bin mir sicher es gibt wenige Scripte die nicht irgendwo nen Angriffspunkt über diese Methode haben. Damit dies nicht mehr passiert, musst du nun die Variablen aus der URL oder aus Formularen explizit abholen. Das heisst zufällig wird dir in Zukunft keine Variable mehr über die Adresse untergemogelt.

Lass dich aber nicht in falsche Sicherheit wiegen. Denn viele Hoster haben REGISTER_GLOBALS noch an. Es bringt dir also gar nichts wenn dein Script mit REGISTER GLOBALS off einwandfrei und sicher funktionieren würde. Es muss mit beiden Methoden sicher sein..

Marc