PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Register_Globals=OFF zwingend erforderlich?



Silmarillion
08.01.2005, 09:32
Hallo,

nachdem ja einige Sicherheitslücken bekannt wurden, würde mich einfach mal interessieren, ob es erforderlich bzw. empfehlenswert ist, diese Einstellung - auch nach den jüngsten Sicherheitspatches (.init.php) - zu deaktivieren?

Was könnte dies schlimmstenfalls für Folgen haben? Gibt es bei vB3 noch Skripte, die register_globals erfordern?

mfg

FiX
08.01.2005, 10:04
Ich hatte vor einiger Zeit mal versucht register_globals auf ON zu stellen - da ging mein Forum gar nicht, kam sofort eine Fehlermeldung.

Läuft bei mir also seit eh und je mit OFF und hab eigentlich nie gemerkt, dass irgendwelche Funktionen fehlen würden.

Tomek
08.01.2005, 10:39
nachdem ja einige Sicherheitslücken bekannt wurden, würde mich einfach mal interessieren, ob es erforderlich bzw. empfehlenswert ist, diese Einstellung - auch nach den jüngsten Sicherheitspatches (.init.php) - zu deaktivieren?
Es ist immer zu empfehlen die Option register_globals abzuschalten. Egal ob vB3 oder nicht.


Was könnte dies schlimmstenfalls für Folgen haben? Gibt es bei vB3 noch Skripte, die register_globals erfordern?
"Schlecht" programmierte Seiten funktionieren evtl. nicht mehr. vB3 allerdings läuft einwandfrei, wenn register_globals abgeschaltet ist.

Weitere Informationen hierzu findest du hier:
http://de3.php.net/register_globals

h75
08.01.2005, 14:43
hm, aber wozu ist die. Was kann man mit der machen. Ich hab die auch seit Anfang deaktiviert.

Mystics
08.01.2005, 14:44
hm, aber wozu ist die. Was kann man mit der machen. Ich hab die auch seit Anfang deaktiviert.Siehe Link von Tomek.

Silmarillion
08.01.2005, 16:28
Danke für die Hinweise. Option ist nun deaktiviert.

mfg

Jim
10.01.2005, 13:12
Mal eine Frage zu der php.ini in die das register_globals = off ja eingetragen werde müßte.
Da ich keinen direkten Zugang zu den PHP-Einstellungen habe (Managed Server von 1&1) und das register_globals standardmäßig auf ON steht, sagte man mir bei 1&1 ich sollte eine php.ini mit dem register_globals = off darin erstellen und diese Datei in alle Verzeichnisse des Servers legen bei denen das register_globals = off greifen soll.

Fragen:
a) Funktioniert das wirklich ?
b) Für welche Verzeichnisse von vBulletin 3.0.x ist das relevant, sprich in welche Verzeichnisse sollte diese php.ini dann rein?

Danke und Gruß
Jim

Tomek
10.01.2005, 13:21
a) Funktioniert das wirklich ?
Wenn 1&1 das so beschreibt, sollte es gehen. Du kannst es aber auch mit der PHP-Info-Seite von vBulletin überprüfen. Oder du erstellst selbst eine phpinfo-Datei. Beispiel:

phpinfo.php:

<? phpinfo(); ?>
Diese rufst du dann mit dem Browser auf und überprüfst die Einstellung. Vergiss nicht die Datei auch wieder zu löschen, nachdem du mit dem Überprüfen fertig bist.


b) Für welche Verzeichnisse von vBulletin 3.0.x ist das relevant, sprich in welche Verzeichnisse sollte diese php.ini dann rein?
Im Prinzip müsste die Datei dann in jedes Verzeichnis...

Tal
10.01.2005, 13:22
es gibt sehr viele wege register_globals ab/anzuschalten

1. du kannst es durch php scripte abschalten

dazu musst du einfach am anfang des scripts ini_set("register_globals", "0"); eingeben

2. abschalten durch php.ini

in der php.ini ( meistens unter /etc/php.ini ) eingeben register_globals=off

3. durch den server

hier gibt es mehrere möglichkeiten

durch vhost ( für einen virtuellen host )
durch htaccess ( für ein/mehrere ordner )
global

dazu musst du einfach an jeweiligen stelle folgendes eingeben

php_admin_flag register_globals off

Jim
10.01.2005, 13:49
Erstmal Danke für die Antworten!

Die register_globals steht auf ON, darum will ich sie ja auf OFF setzen. ;)
Auf die Konfiguration des Managed Servers habe ich keinerlei direkten Einfluss, sprich ich kann die Dateien nicht direkt editieren. Daher ja auch der von 1&1 beschriebene Weg über eine php.ini in dem jeweiligen Verzeichnis. Ob das dann funktioniert weiß ich jetzt natürlich auch noch nicht.

Bevor ich jetzt aber htaccess, oder "global Irgendwas" einsetzt :) ist es vielleicht einfacher in die/alle Verzeichnisse 'ne php.ini mit dem Inhalt register_globals = off zu kopieren. Wie gesagt - immer vorausgesetzt das das auch wirklich funktioniert/wirkt.
Einfacher wäre es natürlich man könnte irgendwie mit vBulletin den Wert zentral vorgeben. Notfalls in dem man in eine bestimmte Datei von vBulletin das register_globals = off manuell mit aufnimmt?

Ach ja zur Info: Bei den normalen Hosting-Paketen von 1&1 (also nicht der Managed Server) die ebenfalls 'ne SQL-Datenbank enthalten, steht register_globals ebenfalls auf ON. Zumindest bei den Paketen die ich hier noch habe. Wobei das evtl. nur auf den geshareten SQL-Server zutrifft auf dem meine Pakete laufen.

Gruß Jim

Silmarillion
10.01.2005, 15:00
@ Jim

Wozu hast Du überhaupt einen MS? Rufe bei 1&1 an und bitte die Jungs/Mädels darum die Option auf OFF zu setzen.
Sollten sie dem nicht nachkommen, würde ich - an Deiner Stelle - ernsthaft in Erwägung ziehen den Anbieter zu wechseln.

mfg

Mystics
10.01.2005, 20:19
Eine einzige .htaccess im Hauptverzeichnis des Forums reicht doch.
php_flag register_globals "Off"

Jim
10.01.2005, 23:42
Hallo Mystics,

Eine einzige .htaccess im Hauptverzeichnis des Forums reicht doch.
php_flag register_globals "Off"
ja warum sagt das denn keiner? :D

Werd' das morgen mal probieren.

Danke und Gruß
Jim

Tal
11.01.2005, 08:54
und was hab ich in meinem post gesagt??

siehe 3 posts höher ;)

Jim
11.01.2005, 09:35
Hallo Tal,

und was hab ich in meinem post gesagt??
siehe 3 posts höher ;)

jo - das hatte ich wohl gelesen, aber das entscheidende war das "Eine einzige .htaccess im Hauptverzeichnis des Forums..."
Das es so einfach ist konnte ich mir anhand Deines Postings nicht vorstellen. Trotzdem natürlich danke dafür!

Ähm - mal eine Frage an Mystics: Wenn es wirklich so einfach ist mit einer .htaccess und dem Code php_flag register_globals "Off" darin, die Sicherheit des Forums zu erhöhen, macht es dann nicht Sinn diese m.E. wichtige Info irgendwo zentral für alle User (gut sichtbar) zu veröffentlichen? Oder gibt es schon irgendwo hier diese Info und ich habe sie nur übersehen?

Bei vielen Hostern steht m.E. das register_globals auf ON und viele User haben nicht die Möglichkeit das direkt zu beeinflussen. Aber wohl jeder User hat die Möglichkeit 'ne .htaccess ins Verzeichnis zu kopieren.
Da dies die Sicherheit des Forums betrifft halte ich es für eine gute und wichtige Info, die irgendwo gut erkennbar vorhanden sein sollte.

Gruß Jim

Jim
11.01.2005, 12:45
Hab zwar jetzt lt. PHP-Info aus dem Admin-Menü die register_globals per php.ini-Dateien in den Verzeichnisssen auf OFF stehen, aber trotzdem will ich jetzt wegen der .htaccess nochmal nachhaken.

Im Moment habe ich im Root des Forum diese .htaccess drin


deny from 66.196.72
deny from 66.196.90
deny from 66.196.91

um die blöden Bots zu blocken.
Wie sollten denn die .htaccess aussehen wenn ich sie um das php_flag register_globals "Off" erweitere?

Das funktioniert leider nicht (Error)


deny from 66.196.72
deny from 66.196.90
deny from 66.196.91
php_flag register_globals "Off"


Koennte das Problem vielleicht damit zusammenhängen?
Die Beeinflussung mit einer .htaccess soll angeblich nur mit der module Version von php im Apache funktionieren, nicht mit der CGI-Version.

Danke und Gruß
Jim

rklute
11.01.2005, 13:23
Hallo,

bei Host Europe kann man im KIS unter "PHP-RegisterGlobals" (Administration > Webhosting > URL > Sicherheitseinstellungen) den Modus ändern.

Gruß Rainer

Tal
11.01.2005, 14:01
kann gut sein

kannst ja sonst folgendes probieren

php_admin_flag register_globals off

alternativ wie gesagt z.B bei config.php oder global.php ganz oben

ini_set("register_globals", "0");

einfügen

simplex
11.01.2005, 17:09
kann gut sein

kannst ja sonst folgendes probieren

php_admin_flag register_globals offDas ist empfehlenswert.
alternativ wie gesagt z.B bei config.php oder global.php ganz oben

ini_set("register_globals", "0");

einfügenWenn mich meine Erinnerung nicht täuscht, ist eine solche Beeinflussung noch zur Laufzeit nicht mehr möglich. Wenn es so einfach wäre, wüsste ich auch keinen Grund, wieso das im vB nicht von Haus aus eingebaut sein sollte.

Tal
11.01.2005, 18:23
doch doch es ist möglich

du kannst viele variablen auch zur laufzeit ändern

http://de.php.net/manual/de/function.ini-set.php

simplex
11.01.2005, 18:57
doch doch es ist möglich

du kannst viele variablen auch zur laufzeit ändern

http://de.php.net/manual/de/function.ini-set.php
Danke. :) Die Funktion kannte ich, aber jetzt haben wir eine verlässtliche Aussage zum Thema:
register_globals boolean

Dieser Schalter bestimmt, ob die EGPCS-Variablen (Environment/Umgebung, GET, POST, Cookie, Server) als globale Variablen registriert werden oder nicht. Zum Beispiel erzeugt die URL http://www.example.com/test.php?id=3 die Variable $id, wenn register_globals = on. Außerdem wäre $DOCUMENT_ROOT aus $_SERVER['DOCUMENT_ROOT'] verfügbar. Sie sollten dies ausschalten, wenn der globale Bereich Ihrer Skripte nicht durch Benutzerdaten verunreinigt werden soll. Seit PHP 4.2.0 ist die Standardeinstellung off. Wir empfehlen Ihnen, sich stattdessen die vordefinierten Variablen von PHP anzusehen, wie z.B. die folgenden superglobalen Arrays: $_ENV, $_GET, $_POST, $_COOKIE und $_SERVER. Bitte lesen Sie auch das Sicherheits-Kapitel über die Benutzung von register_globals für weitere Informationen.

Bitte beachten Sie, dass register_globals nicht während der Laufzeit Ihrer Skripte gesetzt werden kann (ini_set()). Wenn Ihr Server es erlaubt, können Sie aber .htaccess wie oben beschrieben verwenden. Beispiel für einen .htaccess Eintrag: php_flag register_globals on. Quelle : http://de.php.net/manual/de/ini.sect.data-handling.php#ini.register-globals

david_ffm
13.12.2005, 10:56
Hallo,

nachdem ja einige Sicherheitslücken bekannt wurden, würde mich einfach mal interessieren, ob es erforderlich bzw. empfehlenswert ist, diese Einstellung - auch nach den jüngsten Sicherheitspatches (.init.php) - zu deaktivieren?

Was könnte dies schlimmstenfalls für Folgen haben? Gibt es bei vB3 noch Skripte, die register_globals erfordern?

mfg

Ich bin neu hier und weiß nicht genau wo dies gehört, ich versuche
es einfach mal hier.
Ich habe ein Form in PHP die über POST Variablen setzen soll und sich
selber wieder laden, so z.B. top.php:

#!/usr/bin/php
Content-type: text/html

<HTML>

Welcome <?php echo $_POST["name"]; ?>.<br />
You are <?php echo $_POST["age"]; ?> years old! <br>
Welcome <?php echo $name; ?>.<br />
You are <?php echo $age; ?> years old! <br>

<form action="top.php" method="POST">
Enter your name: <input type="text" name="name" />
Enter your age: <input type="text" name="age" />
<input type="submit" />
</form>

<? phpinfo(); ?>

</HTML>

Wenn ich etwas eintrage in den Felder "name" und "age" ist es
beim nächsten Aufruf von top.php doch nicht gesetzt.
Die 4 Ausgabezeilen am Anfang geben für die Variablen/Arrays
nichts aus.
Von dem phpinfo() sehe ich, daß register_globals on ist
"register_globals => On".

Woran kann das liegen?
Ich habe PHP 4.4.0. Mit PHP3 ging das alles problemlos.
Was hat man sonst in Name der Sicherheit kaputt gemacht?

Danke im Voraus,
David

StGaensler
13.12.2005, 19:25
Wenn ich in diese Felder meinen Namen und mein Alter angebe, wird das in den ersten beiden Zeilen angezeigt, sobald ich auf "Submit Query" drücke. Funktioniert das bei dir nicht?
Oder willst du, dass diese Werte gespeichert werden? Das musst du entweder serverseitig über eine Session-Variable machen, oder clientseitig in einem Cookie speichern.

david_ffm
13.12.2005, 19:55
Wenn ich in diese Felder meinen Namen und mein Alter angebe, wird das in den ersten beiden Zeilen angezeigt, sobald ich auf "Submit Query" drücke. Funktioniert das bei dir nicht?
Oder willst du, dass diese Werte gespeichert werden? Das musst du entweder serverseitig über eine Session-Variable machen, oder clientseitig in einem Cookie speichern.

Nein, bei mir wird nichts angezeigt da wo Name und Alter
sein soll. Die Array $_POST ist auch leer, habe ich auch
mit einer Schleife ausgegeben.
Wenn es bei dir geht, dann ist vielleicht mein Server falsch
konfiguriert irgendwie.

StGaensler
13.12.2005, 20:17
Du kannst ja auch get verwenden:

<HTML>

Welcome <?php echo $_GET["name"]; ?>.<br />
You are <?php echo $_GET["age"]; ?> years old! <br>
Welcome <?php echo $name; ?>.<br />
You are <?php echo $age; ?> years old! <br>

<form action="top.php" method="get">
Enter your name: <input type="text" name="name" />
Enter your age: <input type="text" name="age" />
<input type="submit" />
</form>Funktioniert das besser?

david_ffm
13.12.2005, 20:31
Du kannst ja auch get verwenden:

<HTML>

Welcome <?php echo $_GET["name"]; ?>.<br />
You are <?php echo $_GET["age"]; ?> years old! <br>
Welcome <?php echo $name; ?>.<br />
You are <?php echo $age; ?> years old! <br>

<form action="top.php" method="get">
Enter your name: <input type="text" name="name" />
Enter your age: <input type="text" name="age" />
<input type="submit" />
</form>Funktioniert das besser?

Danke, aber nein, leider nicht.
Die $_GET Array ist ebenfalls leer.
Das einzige was gesetzt ist mit den eingegebenen Daten bei
GET ist $_SERVER["REQUEST_URI"] - das steht dann auf sowas
wie:-
/cgi-bin/top.php?name=david&age=123
Daraus kann ich die Felder selbst parsen, aber irgendwie
macht das wenig Spass :-( - ist ja auch nicht im Sinne PHP.
Noch etwas fehlt mir auf: Ich brauche am Anfang von
meinem .php die Zeilen:-

#!/usr/bin/php
Content-type: text/html

ansonsten gibt es ein Server Error (internal error) 500.
Kann es sein, daß das auf eine miskonfiguration des Servers
hindeutet? Diesen Zeilen sollen eigentlich nicht in einem cgi
nötig sein, oder?

StGaensler
13.12.2005, 21:31
Da kenne ich mich nicht wirklich aus :)
Meine php-Dateien brauchen das nicht. Es kann sein, dass bei dir php als Komandozeilen-Version läuft - wie gesagt, ich habe keine Ahnung von Garnichts :)

Grendel
27.05.2008, 13:21
Der Thread ist zwar steinalt, aber meine Frage aktuell. ;)
Wenn ich register_globals in der .htaccess-Datei auf off setze, bekomme ich einen 500-Fehler, setze ich den Wert in der php.ini, ist alles ok. Wie kann das zustande kommen?

StGaensler
27.05.2008, 13:26
Schau mal in der error.log von Apache nach, welcher Fehler auftritt, diese Meldung sollte aufschlussreich sein :) Vermutlich darfst du den Wert über die .htaccess nicht setzen.

Viele Grüße

Stefan