• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

$_GET['var'] = "x"; sicher?

F

FoXMorayn

Guest
EDIT: kann hier leider nicht mehr antworten. bekomme einen fehler, den als meldung des beitrags abgesendet habe.

hallo,

ich habe eine kritische anwendung, in der ich eine get variable manipulieren muss/möchte.
im code sieht es so aus:

Code:
$_GET['var'] = "x";
nun kann man $_GET bestens von außen beeinflussen, ist der wert der variable gesichert, wenn ich diesen nacher überschreibe?
theroretisch kann man nach dem request ja nichts mehr an der prozedur ändern.
sperren der get variable per htaccess wär ein ansatz.
hat da jemand schonmal mit rumgespielt?

gruß,
foxmorayn
 
Zuletzt bearbeitet von einem Moderator:
Was heisst hier du willst die GET Variable "nachher" überschreiben? :)
Du solltets gucken, dass die GET Variable vorher valide daten enthält und nur eine Aktion ausführen, wenn die Daten auch valide sind. Danach sind die GET Daten uninteressant. Must also nichts überschreiben. (Und sensible Daten bitte nie per get verschicken)
 
wenn du z.b. mittels der superglobalen $_GET IDs ziehst, zu denen dann die einträge gezeigt werden, muss das ganze zumindest mal mit mysql_real_escape_string() gegen injections abgesichert werden. das ist vorallem deswegen hilfreich, wenn du ein DB-system verwendest, das multi-queries ("multiple statements") erlaubt (MySQL tut das) und potentielle angreifer versuchen, der URL noch schädlichen code anzufügen.

verwendest du:

PHP:
<?php
$sql = "SELECT * FROM produkte WHERE produktid = '".$_GET['x']."' ";
?>

ohne sicherung, kann man per injection erstmal alles anzeigen, auch wenn es nicht in deiner beabsichtigung lag und schädlichen code anfügen:

Code:
http://host.tld/show.php?id=2+DELETE+FROM+PRODUKTE

das extrembeispiel hier funktioniert tatsächlich und würde deine komplette produktdatenbank leeren.
ist das ganze allerdings abgesichert, musste dir keine gedanken machen.

Nils aka XraYSoLo
 
Ich verstehe gar nicht wozu du eine Variable überschreibst, die überhaupt nicht verwendet wird.

Woraus schließe ich, dass diese Variable nicht verwendet wird? Dir ist total egal, was in der Variablen steht, wenn du sie später mit "x" überschreibst! Wozu also der Einsatz von $_GET? Dieser wäre dann total unsinnig.

Dann kannst du auch
Code:
$var = 'x';
schreiben und $var anstelle von $_GET['var'] verwenden.

register_globals = off mal vorausgesetzt.
 
Zurück
Oben