Apache 1.3.28 / PHP 4.3.3: URL-Variablen funktionieren nicht
Hallo! HAbe Apache und PHP auf Suse9.0 installiert. Normalerweise kann man ja über einen Aufruf ala http://localhost/test.php?katze=miau eine Variable setzen, die über PHP verwendet werden kann. In der test.php steht: Code: <? echo "$katze"; ?> Auf anderen Servern funktioniert das natürlich, nur bei mir wieder nicht... Any ideas? Vielen Dank! Marco Sievert
Habe Apache und PHP auf Suse9.0 installiert. Normalerweise kann man ja über einen Aufruf ala http://localhost/test.php?katze=miau eine Variable setzen, die über PHP verwendet werden kann.
In der test.php steht: Code:
<? echo "$katze"; ?>
Auf anderen Servern funktioniert das natürlich, nur bei mir wieder nicht...
Any ideas?
Jepp. Sind in der php.ini "RegisterGlobals=On"? MfG Kilian
Hallo! Vielen Dank, funktioniert jetzt! Vielleicht weisst du auch das: Wenn ich http://localhost/test/ eingebe, kommt wie gewünscht das Directory-Listing. Wenn ich aber nur http://localhost/test (also ohne abschliesenden Slash) nehme, geht es nicht. Why? Schöne nachweihnachtliche Grüße Marco Sievert
Moin, Am Sa, den 27.12.2003 schrieb Marco Sievert um 19:56:
Wenn ich http://localhost/test/ eingebe, kommt wie gewünscht das Directory-Listing. Wenn ich aber nur http://localhost/test (also ohne abschliesenden Slash) nehme, geht es nicht. Why?
Das passiert eigentlich immer dann, wenn der Rechner seine Adresse nicht revers auflösen kann. Mit "localhost" gab es glaubich in der Suse 9.0 eine Eigenart, guck mal in der SDB nach. Gruß, Ratti -- -o) fontlinge | Font management for Linux | Schriftenverwaltung in Linux /\\ http://freshmeat.net/projects/fontlinge/ _\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/
On Saturday 27 December 2003 19:56, Marco Sievert wrote:
Wenn ich http://localhost/test/ eingebe, kommt wie gewünscht das Directory-Listing. Wenn ich aber nur http://localhost/test (also ohne abschliesenden Slash) nehme, geht es nicht. Why?
Ist http://httpd.apache.org/docs/mod/core.html#usecanonicalname auf off? Kristian -- http://www.amazon.de/exec/obidos/wishlist/18E5SVQ5HJZXG
Moin, Am Sa, den 27.12.2003 schrieb Kilian Kluge um 19:45:
einen Aufruf ala http://localhost/test.php?katze=miau eine Variable setzen,
Auf anderen Servern funktioniert das natürlich, nur bei mir wieder nicht...
Any ideas?
Ja. Das ist kein Suse-Special, das ist schon seit längerer Zeit eine Änderung in php.
Jepp.
Sind in der php.ini "RegisterGlobals=On"?
Bring ihn nicht auf Idee. Ja, dann würde es funktionieren, aber RegisterGlobals soll jetzt auf "Off" bleiben. Stattdessen passt man seine Programme an: $katze = $_GET["katze"]; Ansonsten ist RegisterGlobals aber genau der Begriff, nach dem man googlen sollte, um zu verstehen, was sich geändert hat. Bitte nicht einfach wieder anschalten. Gruß, Ratti -- -o) fontlinge | Font management for Linux | Schriftenverwaltung in Linux /\\ http://freshmeat.net/projects/fontlinge/ _\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/
Am Samstag, 27. Dezember 2003 20:01 schrieb Joerg Rossdeutscher:
Moin,
Am Sa, den 27.12.2003 schrieb Kilian Kluge um 19:45:
einen Aufruf ala http://localhost/test.php?katze=miau eine Variable setzen,
Auf anderen Servern funktioniert das natürlich, nur bei mir wieder nicht...
Any ideas?
Ja. Das ist kein Suse-Special, das ist schon seit längerer Zeit eine Änderung in php.
Jepp.
Sind in der php.ini "RegisterGlobals=On"?
Bring ihn nicht auf Idee. Ja, dann würde es funktionieren, aber RegisterGlobals soll jetzt auf "Off" bleiben. Stattdessen passt man seine Programme an:
$katze = $_GET["katze"];
Ansonsten ist RegisterGlobals aber genau der Begriff, nach dem man googlen sollte, um zu verstehen, was sich geändert hat. Bitte nicht einfach wieder anschalten.
Danke für die Info!
Am Sam, 27 Dez 2003, schrieb Joerg Rossdeutscher:
einen Aufruf ala http://localhost/test.php?katze=miau eine Variable setzen,
Ja. Das ist kein Suse-Special, das ist schon seit längerer Zeit eine Änderung in php.
Jepp.
Sind in der php.ini "RegisterGlobals=On"?
Bring ihn nicht auf Idee. Ja, dann würde es funktionieren, aber RegisterGlobals soll jetzt auf "Off" bleiben. Stattdessen passt man seine Programme an:
$katze = $_GET["katze"];
Uups, da war mal wieder jemand schneller als ich. Sorry Ratti - genau dies hatte ich nun nochmal getippt. Hmm, ich könnt' die Mail noch aus der Queue holen ;) tschüss HAgen -- 48/ 78 Es ist schwieriger eine vorgefaßte Meinung zu zertrümmern als ein Atom. Albert Einstein
Moin, Am Mo, den 29.12.2003 schrieb Marco Sievert um 12:22:
Ihr (du und Jörg) habt Recht, ich sollte mal alle meine Skripte umschreiben.
Oooh, bitte CC an meine Exfreundin: Ich hatte in irgendwas Recht! :-)))
short_open_tags sind auch nicht Standard, das Ding heißt öffnend "
Aber fast Standard ;-)
Wag es nicht! :-) Ergänzung: Das mit dem "Umschreiben" ist halb so schlimm. Für alte Sachen bzw. fremde Scripte gibt es die Möglichkeit, über ".htaccess"-Files in ganz bestimmten Ordnern ganz gezielt RegisterGlobals wieder zu aktivieren. Eine Möglichkeit ist, das Auslesen der übergebenen Parameter mit einer eigenen Routine durchzuführen, die man in allen Projekten einfach included und die beide Methoden beherrscht, alt wie neu. In diesem Fall ist man allerdings wieder dafür verantwortlich, eben jene Sicherheitslücken selbst abzufangen, die durch das abschalten der Globals beseitigt wurden. Ich mache das immer dann so, wenn ich eine Site baue, die später bei einem Provider liegen wird, der RegisterGlobals noch auf On hat (Was derzeit eigentlich alle sind, die mir unterkommen) Gruß, Ratti -- -o) fontlinge | Font management for Linux | Schriftenverwaltung in Linux /\\ http://freshmeat.net/projects/fontlinge/ _\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/
Hallo Ratti, hallo Leute, Am Montag, 29. Dezember 2003 21:47 schrieb Ratti:
Am Mo, den 29.12.2003 schrieb Marco Sievert um 12:22:
Ihr (du und Jörg) habt Recht, ich sollte mal alle meine Skripte umschreiben.
Oooh, bitte CC an meine Exfreundin: Ich hatte in irgendwas Recht! :-)))
*LoL*
[...] Wag es nicht! :-)
Ergänzung: Das mit dem "Umschreiben" ist halb so schlimm. Für alte Sachen bzw. fremde Scripte gibt es die Möglichkeit, über ".htaccess"-Files in ganz bestimmten Ordnern ganz gezielt RegisterGlobals wieder zu aktivieren.
Unschön, aber manchmal nötig.
Eine Möglichkeit ist, das Auslesen der übergebenen Parameter mit einer eigenen Routine durchzuführen, die man in allen Projekten einfach included und die beide Methoden beherrscht, alt wie neu. In
Du meinst diesen bösen php_varfix?
In diesem Fall ist man allerdings wieder dafür verantwortlich, eben jene Sicherheitslücken selbst abzufangen, die durch das abschalten der Globals beseitigt wurden.
Eben, und das kann nervig werden. Die bessere Lösung ist, register_globals nachträglich rauszukicken, wenn es der Provider nicht schon macht: $arr = array_merge(&$_ENV,&$_GET,&$_POST,&$_COOKIE,&$_SESSION); while(list($key) = each($arr)) unset(${$key}); (Quelle: User-Kommentare zu security.registerglobals.php auf php.net) Dadurch sind sämtliche globale Variablen weg, auch wenn register_globals noch an ist. Danach kann man sich die Werte sauber aus $_GET usw. holen. Alternativ kann man auch per .htaccess register_globals auf seinem Webspace deaktivieren: php_flag register_globals off oder php_value register_globals 0 - funktioniert allerding nur, wenn AllowOverride Options gesetzt ist (ebenfalls den sehr nützlichen User-Kommentaren auf php.net entnommen) Sämtliche Codeschnipsel aus den Userkommentaren von php.net sind ungetestet, müssten aber funktionieren ;-)
Ich mache das immer dann so, wenn ich eine Site baue, die später bei einem Provider liegen wird, der RegisterGlobals noch auf On hat (Was derzeit eigentlich alle sind, die mir unterkommen)
Ja, leider. Ich war übrigens auch sehr (negativ) überrascht, als ich auf einem von mir betreuten Server register_globals deaktiviert hab und dann feststellte, dass Confixx ohne register_globals nicht läuft :-( Naja, jetzt ist es eben für dieses Verzeichnis wieder aktiviert, aber Confixx gefällt mir noch weniger als vorher... Gruß Christian Boltz -- PATH="${HOME}/Oktoberfest 2003:$PATH" configure '--prefix=Auf geht\'s' [Ralf Corsepius in suse-programming]
Moin, Am Sam, 27 Dez 2003, schrieb Kilian Kluge:
einen Aufruf ala http://localhost/test.php?katze=miau eine Variable setzen, die über PHP verwendet werden kann.
short_open_tags sind auch nicht Standard, das Ding heißt öffnend "
echo "$katze";
Du übergibst katze als GET, dann rufe diese Variable auch so auf. echo $HTTP_GET_VARS['katze']; oder superglobal echo $_GET['katze'];
?>
An diesem Teil des Skriptes habe ich nichts auszusetzen :)
Sind in der php.ini "RegisterGlobals=On"?
Das ist nicht ohne Grund per default ausgeschaltet, und zwar bereits seit PHP 4.2.x Warum? Saubere Programmierung - Handling von usereingaben - nicht alles glauben, was da kommt. In test2.php schichkt man dann $katze direkt als SQL-Statement weiter, und welch Wunder - irgendwann faked diesen String jemand und man bekommt seine gerechte Strafe. DROP%20DATABASE%20miau SQL-Injection heißt das dann. Zum testen von php-Seiten sollte man doch einfach sein beliebtes <?php phpinfo(); ?> benutzen, sich dannach aber sofort in die sehr ausführlich Doku einlesen. Warum schreibt unsereins eigentlich Dokus? Guten Rutsch Hagen -- 32/ 78 Da haben wir wieder mein Problem. Ich bin für meinen Job und meine Branche völlig ungeeignet: Ich habe ein Gewissen. Marc Haber in dasr
Moin! Am So, den 28.12.2003 schrieb Hagen Kühnel um 23:17:
Du übergibst katze als GET, dann rufe diese Variable auch so auf. echo $HTTP_GET_VARS['katze'];
Nope, das ist noch so'ne Leiche im Keller: $_GET Variables provided to the script via HTTP GET. Analogous to the old $HTTP_GET_VARS array (which is still available, but deprecated). http://de3.php.net/variables.predefined Wird also auch bald sterben - ich schätze mal, mit php5.
oder superglobal echo $_GET['katze'];
Jepp. Gruß, Ratti -- -o) fontlinge | Font management for Linux | Schriftenverwaltung in Linux /\\ http://freshmeat.net/projects/fontlinge/ _\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/
Am Mon, 29 Dez 2003, schrieb Joerg Rossdeutscher:
Am So, den 28.12.2003 schrieb Hagen Kühnel um 23:17:
Du übergibst katze als GET, dann rufe diese Variable auch so auf. echo $HTTP_GET_VARS['katze'];
Nope, das ist noch so'ne Leiche im Keller:
$_GET Variables provided to the script via HTTP GET. Analogous to the old $HTTP_GET_VARS array (which is still available, but deprecated).
Hmm, nur _XXX sind superglobal und müssen wieder in keiner Funktion globalisiert (oder übergeben) werden. Verleitet mich ja wieder zu einfachem, unüberlegten echo etc.
http://de3.php.net/variables.predefined
Wird also auch bald sterben - ich schätze mal, mit php5.
Nein. Ratti, Du müsstest doch langsam wissen, dass ich .. GET localhost/test_get.php?test=isse%20da? isse da? <br> 5.0.0b1 Oh, ich muss mal updaten :) tschüss Hagen Guten Rutsch -- 14/ 78 Denn ein Tyrann ist nicht, wenn die Masse nicht geduldig stillhält. Kurt Tucholsky
Moin, Am Di, den 30.12.2003 schrieb Hagen Kühnel um 22:59:
Am Mon, 29 Dez 2003, schrieb Joerg Rossdeutscher:
Nope, das ist noch so'ne Leiche im Keller:
$_GET Variables provided to the script via HTTP GET. Analogous to the old $HTTP_GET_VARS array (which is still available, but deprecated).
Hmm, nur _XXX sind superglobal und müssen wieder in keiner Funktion globalisiert (oder übergeben) werden. Verleitet mich ja wieder zu einfachem, unüberlegten echo etc.
Tja. ;-) Aber deprecated heisst nunmal: Ist bald hin und wech.
http://de3.php.net/variables.predefined
Wird also auch bald sterben - ich schätze mal, mit php5.
Nein. Ratti, Du müsstest doch langsam wissen, dass ich ..
:-) Wart's ab - das ist bestimmt nur, um die Stabilität noch mit den alten Scripten testen zu können. Im allerallerallerletzten Pre-Release werden sie's dann löschen. :-) Gruß, Ratti -- -o) fontlinge | Font management for Linux | Schriftenverwaltung in Linux /\\ http://freshmeat.net/projects/fontlinge/ _\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/
Am Die, 30 Dez 2003, schrieb Joerg Rossdeutscher:
Am Di, den 30.12.2003 schrieb Hagen Kühnel um 22:59:
Wird also auch bald sterben - ich schätze mal, mit php5.
Nein. Ratti, Du müsstest doch langsam wissen, dass ich ..
Wart's ab - das ist bestimmt nur, um die Stabilität noch mit den alten Scripten testen zu können. Im allerallerallerletzten Pre-Release werden sie's dann löschen. :-)
Das "allerallerallerletzte" war beta2 (feature-freeze), beta3 hatte jetzt nochmal Fehlerbereinigungen bekommen - ein beta4 sollte es nicht mehr geben. (Ich persönlich erwarte stable im Januar). Hmm, ich baue mir mal schnell das beta3 und gucke nochmal - glaube ich aber nicht, dass sie es so schnell wegnehmen. ..... Dass das immer solange dauert :( ###################### tuxmobil:/home/hagk# ls -l /usr/lib/apache/1.3/libphp5.so -rwxr-xr-x 1 root root 5129391 28. Okt 15:45 /usr/lib/apache/1.3/libphp5.so tuxmobil:/home/hagk# cp /usr/lib/apache/1.3/libphp5.so /usr/local/php-5.0.0b1/ tuxmobil:/home/hagk# ls -l /usr/lib/apache/1.3/libphp5.so -rwxr-xr-x 1 root root 5600350 31. Dez 18:40 /usr/lib/apache/1.3/libphp5.so tuxmobil:/home/hagk# /etc/init.d/apache restart Reloading apache modulesstart-stop-daemon: warning: failed to kill 1334: No such process [Wed Dec 31 18:42:49 2003] [warn] module php5_module is already loaded, skipping . tuxmobil:/home/hagk# GET localhost/test_get.php\?test=ein%20test ein test <br> 5.0.0b3 ###################### Bitte sehr, die aktuellste PHP5 kanns auch noch. Ahhja, wass drin steht: <?php echo $HTTP_GET_VARS['test']; echo "\n<br>\n"; echo phpversion()."\n"; ?> Guten Rutsch, tschüss Hagen -- 18/ 78 Ist das Wahre abstrakt, so ist es unwahr. Hegel
On Saturday 27 December 2003 19:39, Marco Sievert wrote:
HAbe Apache und PHP auf Suse9.0 installiert. Normalerweise kann man ja über einen Aufruf ala http://localhost/test.php?katze=miau eine Variable setzen, die über PHP verwendet werden kann.
In der test.php steht: Code:
<? echo "$katze"; ?>
11.20. Warum funktionieren meine Formulare nicht? http://www.dclp-faq.de/q/q-formular-register-globals.html Der Rest der FAQ ist möglicherweise auch für Dich interessant. Kristian -- http://www.amazon.de/exec/obidos/wishlist/18E5SVQ5HJZXG
participants (6)
-
Christian Boltz
-
Hagen Kühnel
-
Joerg Rossdeutscher
-
Kilian Kluge
-
Kristian Köhntopp
-
Marco Sievert