Code Frage

GoldenEye

Erfahrenes Mitglied
Hi,

ich habe grad im mybb einen kleinen Code gefunden und ich woltle fragen, was der jetzt bewirkt:

PHP:
		$protected = array("_GET", "_POST", "_SERVER", "_COOKIE", "_FILES", "_SERVER", "_ENV", "GLOBALS");
		foreach($protected as $var)
		{
			if($_REQUEST[$var] || $_FILES[$var] || $_COOKIE[$var])
			{
				die("Hacking attempt");
			}
		}

Schützt der generell die POST Variable? Also so, dass zb über ein Textfeld keine SQL Injektion mehr möglich ist?

Denn ich finde es immer so mühsam bei vielen Textfeldern jeder einzeln über einen array zu schützen.

gruß
 
Also mit irgendwelchen Injections (Code-Injection, SQL-Injection) hat der Code meiner Meinung nach nichts zu tun.
Allgemein find ich den Code irgendwie nicht sehr sinnvoll, denn es wird dabei lediglich geprueft ob Werte mit Namen wie z.B. _GET oder POST per GET, POST, als File-Upload oder Cookie uebergeben wurden.
Wenn register_globals=off ist bringt diese Aktion rein garnichts.
 
Also mit irgendwelchen Injections (Code-Injection, SQL-Injection) hat der Code meiner Meinung nach nichts zu tun.
Allgemein find ich den Code irgendwie nicht sehr sinnvoll, denn es wird dabei lediglich geprueft ob Werte mit Namen wie z.B. _GET oder POST per GET, POST, als File-Upload oder Cookie uebergeben wurden.
Wenn register_globals=off ist bringt diese Aktion rein garnichts.

ahhso danke.

ist sowas, (also das mit der generellen Überprüfung aller POST Daten) überhaupt möglich?

gruß
 
Ich denke nicht, dass es moeglich eine Funktion zu schreiben die Post auf alle moeglichen Schwachstellen prueft. Es kommt ja immer darauf an was erwartet wird.
Gegen SQL-Injections sind Funktionen wie mysql_real_escape_string() schon eine gute Sache. Hier muss man aber vorsichtig sein wenn die Magic Quotes aktiv sind, denn dann werden uebergebene Daten gleich gequotet und eine Behandlung der Daten mit einer Funktion wie mysql_real_escape_string() wuerde da ziemliches Chaos verursachen.
In der PHP-Doku findest Du aber, auf der Seite ueber mysql_real_escape_string(), wenn ich mich recht erinnere, ein gutes Beispiel wie damit umgegangen werden kann.
Ansonsten kann es natuerlich auch nie schaden zu pruefen ob ueberhaupt Daten uebergeben wurden die dem gewuenschten Wert entsprechen. Wenn Du einen numerischen Wert erwartest kannst Du gleich abbrechen oder gegensteuern wenn Du einen nicht-numerischen Wert erhaeltst.
 
Zurück