Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Sichere Variablen wann?
Frage
Hallo,
hab ein kleines Problem, hab hier mehrere Formulare,Skripte die mit "normalen" Variablen arbeiten.
z.B.
if ($submit){ bla bla bla..
oder
mysql_query("insert into produktsonder (type,german,english,french,spain) values ('$type','$german','$english','$french','$spain')");
oder
URL=prodsel-liste.php?untergruppe=$untergruppe......
---------------------------------------
wann tausche ich die Variablen in die sicheren $_GET, $_POST ein bzw. wann ist eine Verwendung dieser angeraten?
Gruß
Antwort 1 von Nessus
Hi,
eigentlich immer, da es mit den zukünftigen PHP-Versionen immer die Register_Globals zu beachten gibt.
Falls dein Provider auf die neuen PHP-Versionen umstellt, kann es sonst zu Problemen kommen.
Nessus
eigentlich immer, da es mit den zukünftigen PHP-Versionen immer die Register_Globals zu beachten gibt.
Falls dein Provider auf die neuen PHP-Versionen umstellt, kann es sonst zu Problemen kommen.
Nessus
Antwort 2 von saxnot2003
Hmm, würde es dann heißen, das der Query in Mysql so ausehen würde:
$_POST['type'],$_POST['german'] usw..
und die Übergabe von Variablen in eine andere Seite?
liste.php?unterguppe=$ ???????????
Weil ich hab nämlich bald das Problem, das eine neuere Version von PHP kommt.
Gruß
$_POST['type'],$_POST['german'] usw..
und die Übergabe von Variablen in eine andere Seite?
liste.php?unterguppe=$ ???????????
Weil ich hab nämlich bald das Problem, das eine neuere Version von PHP kommt.
Gruß
Antwort 3 von Nessus
Hi,
http://de3.php.net/manual/de/security.registerglobals.php
Natürlich kannst Du das in der .htaccess manipulieren, ist aber nicht unbedingt zu empfehlen!
Nessus
http://de3.php.net/manual/de/security.registerglobals.php
Natürlich kannst Du das in der .htaccess manipulieren, ist aber nicht unbedingt zu empfehlen!
Nessus
Antwort 4 von saxnot2003
Hab ich schon gelesen, ich hab aber auch irgendwo gelesen, das Übergaben von Variablen in eine andere Seite z.B. Hiddenfields - unsicher wären.
Dann wäre ein Link mit
link.php?id=$id
Falsch - weil man die Daten sichtbar hätte - die man in das andere Formular übermittelt.
Wie kann man das schnell und elegant lösen?
Gruß
Dann wäre ein Link mit
link.php?id=$id
Falsch - weil man die Daten sichtbar hätte - die man in das andere Formular übermittelt.
Wie kann man das schnell und elegant lösen?
Gruß
Antwort 5 von ThomasOOP
1. mit sessions arbeiten
sessione werden vorkommen unsichtbar "übergeben"
2. temporäre cookies
3. hidden files mit Post übergeben UND auf der zielseite überprüfen von welcher ausgangsseite diese aufgerufen wurde
sessione werden vorkommen unsichtbar "übergeben"
2. temporäre cookies
3. hidden files mit Post übergeben UND auf der zielseite überprüfen von welcher ausgangsseite diese aufgerufen wurde
Antwort 6 von Nessus
Hi,
ja, das mit den Hidden-Fields ist sehr problematisch. So können ohne weiteres z.B. Mailformulare mißbraucht werden.
Wenn Du die Mailadresse als hidden übergibst, sind da nette Spielereien möglich. So kannst jemand anderes ohne weiteres mit einem Script andere User zumüllen und als Absender steht dann deine Mailadresse (bzw. Domain) dabei. Das kann sehr unangenehm werden, vor allem, wenn der Angreifer mal so 10000 Mails versendet...
Ich versuche auf Hidden-Fields zu verzichten.
Nessus
ja, das mit den Hidden-Fields ist sehr problematisch. So können ohne weiteres z.B. Mailformulare mißbraucht werden.
Wenn Du die Mailadresse als hidden übergibst, sind da nette Spielereien möglich. So kannst jemand anderes ohne weiteres mit einem Script andere User zumüllen und als Absender steht dann deine Mailadresse (bzw. Domain) dabei. Das kann sehr unangenehm werden, vor allem, wenn der Angreifer mal so 10000 Mails versendet...
Ich versuche auf Hidden-Fields zu verzichten.
Nessus
Antwort 7 von saxnot2003
Also kleinen Denkprozess durchgespielt und sie Session-version ist ja eigentlich easy und dürfte so schnell nicht hintergangen werden.
Habs mal an diesen Beispiel getestet:
seite1.php
Jo und Seite2.php
Und niemand bemerkt, das die Variablen auf Seite2.php übergeben wurden.
Das session_destroy() hab ich nur mal zu Test eingebaut um zu sehen,wie Variablen danach ins nichts verfallen.
Gruß und Danke...
Habs mal an diesen Beispiel getestet:
seite1.php
<?
session_start()
$var = "mail@test.de";
$text ="message";
$_SESSION["var"] = $var;
$_SESSION["text"] = $text;
?>
<a href="seite2.php">weiter</a>
Jo und Seite2.php
<?
session_start();
if(session_is_registered("var")){
echo $var;
echo $text;
session_destroy();
}else{
echo "Variable nicht gefunden";
}
?>
Und niemand bemerkt, das die Variablen auf Seite2.php übergeben wurden.
Das session_destroy() hab ich nur mal zu Test eingebaut um zu sehen,wie Variablen danach ins nichts verfallen.
Gruß und Danke...
Antwort 8 von saxnot2003
Mir ist ein kleiner Fehler aufgefallen, obwohl es funktioniert.
die Zeile:
kleines Tutorial zu Sessions ;-)
die Zeile:
if(session_is_registered("var")){
müsste wenn man es richtig macht so aussehen:
if($_SESSION[ "var"]){
kleines Tutorial zu Sessions ;-)

