Ist das Script so sicher?

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
fanrpg
Mitglied
Beiträge: 2909
Registriert: 13.12.2004 22:41

Ist das Script so sicher?

Beitrag von fanrpg »

Hier mal das Script: http://www.fanrpg.com/code.php?id=1

Ich würde gerne wissen ob das sicher ist...
Nicht das einer irgendwie ne .php Datei hochlädt und so mein Forum hacken oder meinetwegen auch anders.

Weiss das jemand zufällig und könnte mal kurz drüber schauen?
rkern
Mitglied
Beiträge: 139
Registriert: 01.02.2005 11:49
Wohnort: Hanau
Kontaktdaten:

Beitrag von rkern »

Code: Alles auswählen

$file = fopen('./scripts/script_'.$new_id.'.txt', 'w'); 
uninitialisierte Vairable $new_id: wenn register_globals gesetzt ist, kann man damit $new_id von aussen setzen und irgendwo in dein Filesystem schreiben.

mfg Ralph
Alturo-Forum Das unabhängige Forum für alle Root-Server und Web-Master auf Linux-Systemen
fanrpg
Mitglied
Beiträge: 2909
Registriert: 13.12.2004 22:41

Beitrag von fanrpg »

Danke :wink:
Habe jetzt mal einen allgemeinen Schutz vor register_globals eingebaut das müsste doch reichen?
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Ähm, und was machst du, wenn das nie ausgeführt wird:

Code: Alles auswählen

        if( !in_array($i, $lines_in_file) )
        {
            $new_id = $i;
            break;
        }
Dann ist $new_id undefiniert, er wirft einen Fehler und öffnet script_.txt.

Generell gilt: Ein genereller Schutz vor register_globals befreit dich nicht vom Vordefinieren von Variablen, wenn du guten Code schreiben willst.

Edit:
Außerdem funktioniert der Schutz soweit ich das sehe nicht:

Code: Alles auswählen

if( $name == $$name )
Müsste das erste $name nicht $value heißen?
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
fanrpg
Mitglied
Beiträge: 2909
Registriert: 13.12.2004 22:41

Beitrag von fanrpg »

in $value steht doch dann der Inhalt von $name.
Aber ich suche ja den Namen von $name also in dem Fall $$name.
Der name der variable wird dann die variable so genannt.
Aber hast recht hab einen Fehler gefunden :D
Dann ist $new_id undefiniert, er wirft einen Fehler und öffnet script_.txt.
Ich definiere es dann einfach und gut ist.
Aber warum sollte der das nicht ausführen? steht ja nicht wirklich in einer if Klammer und 1000 Scripts muss man erstmal hinkriegen :D
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

fanrpg hat geschrieben:in $value steht doch dann der Inhalt von $name.
Aber ich suche ja den Namen von $name also in dem Fall $$name.
Der name der variable wird dann die variable so genannt.
Aber hast recht hab einen Fehler gefunden :D
Moment...

Code: Alles auswählen

$_GET = array(
	'new_code' => 'Mein Code');

foreach ($_GET as $name => $value)
{
	/*
		- $name enthält 'new_code'
		- $value enthält 'Mein Code'
		- $$name ist die Variable mit dem Namen $name = 'new_code', sprich $new_code
		- $$name enthält, wenn register_globals auf on steht, den Wert der GET-Variable,
		  also $value oder auch 'Mein Code'
	*/
	if ($value == $$name)
	{
		unset($$name);
	}
}
fanrpg hat geschrieben:Aber warum sollte der das nicht ausführen? steht ja nicht wirklich in einer if Klammer und 1000 Scripts muss man erstmal hinkriegen :D
Ich meinte das, was in der if-Abfrage steht, sprich das Definieren der Variable $new_id.
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
fanrpg
Mitglied
Beiträge: 2909
Registriert: 13.12.2004 22:41

Beitrag von fanrpg »

S2B hat geschrieben:
fanrpg hat geschrieben:in $value steht doch dann der Inhalt von $name.
Aber ich suche ja den Namen von $name also in dem Fall $$name.
Der name der variable wird dann die variable so genannt.
Aber hast recht hab einen Fehler gefunden :D
Moment...

Code: Alles auswählen

$_GET = array(
	'new_code' => 'Mein Code');

foreach ($_GET as $name => $value)
{
	/*
		- $name enthält 'new_code'
		- $value enthält 'Mein Code'
		- $$name ist die Variable mit dem Namen $name = 'new_code', sprich $new_code
		- $$name enthält, wenn register_globals auf on steht, den Wert der GET-Variable,
		  also $value oder auch 'Mein Code'
	*/
	if ($value == $$name)
	{
		unset($$name);
	}
}
fanrpg hat geschrieben:Aber warum sollte der das nicht ausführen? steht ja nicht wirklich in einer if Klammer und 1000 Scripts muss man erstmal hinkriegen :D
Ich meinte das, was in der if-Abfrage steht, sprich das Definieren der Variable $new_id.
Hmm hast recht, werde das mal ändern.
Antworten

Zurück zu „Coding & Technik“