Fehlermeldung auf Rechner mit WIN"98

Fehlermeldung auf Rechner mit WIN"98

am 14.04.2006 17:21:41 von bettina

Ich habe meine Homepage (www.coaster.ch) auf meinem Rechner mit XP
programmiert und läuft OK, lokal sowohl im Internet. Es ist meine
Bierdeckelsammlung.

Da ich eine Kopie meiner Homepage auf einen Laptop mit WIN '98 haben
will um die Homepage offline anschauen können, habe ich die (fast)
gleiche Umgebung im Laptop reproduziert (XAMPP 1.5.1)

Verbindung zur Datenbank läuft. Die erste Maske wird dargestellt (alle
Deckel mit der Menge Deckel). Man darf sogar die Sprache wechseln. Aber
als ich zur nächste Seite gehen will, d.h. die Deckel eines Landes
sehen will, kriege ich folgende Meldung:

Warning: require(lang..inc.php) [function require]: failed to open
stream: No such file or directory in
C:\XAMPP\xampp\htdocs\PHP_FILES\breweries.php on line 3

Fatal error: require() [function require]: Failed opening required
'lang..inc.php' (include_path=3D'.;C:\XAMPP\xampp\php\pear\') in
C:\XAMPP\xampp\htdocs\PHP_FILES\breweries.php on line 3

lang.de.inc.php, lang.en.inc.php, lang.sp.inc.php sind die Files wo ich
Texte für die 3 Sprachen habe. Und die sind tatsächlich vorhanden.
Die Sprache wird als SESSION_VARIABLE definiert wie folgt (in
INDEX.php)

ob_start();
session_start();
define("DEFAULT_LANGUAGE", "ge");
if (isset($_GET["lang"])) {
$_SESSION["lang"] =3D $_GET["lang"];
} else if (!isset($_SESSION["lang"])) {
$_SESSION["lang"] =3D DEFAULT_LANGUAGE;
}
......

Liegt das Problem am WIN '98.

Übrigens, schau die mal meine Homepage (mit ein Bier dabei.... :-)

Re: Fehlermeldung auf Rechner mit WIN"98

am 14.04.2006 17:34:14 von Niels Braczek

bettina@coaster.ch schrieb:

> > ob_start();
> session_start();
> define("DEFAULT_LANGUAGE", "ge");
> if (isset($_GET["lang"])) {
> $_SESSION["lang"] = $_GET["lang"];
> } else if (!isset($_SESSION["lang"])) {
> $_SESSION["lang"] = DEFAULT_LANGUAGE;
> }

> Liegt das Problem am WIN '98.

Prüfe, was in $_SESSION["lang"] steht... wahrscheinlich nicht das, was
du vermutest.

MfG
Niels

--
| http://www.kolleg.de · Das Portal der Kollegs in Deutschland |
| http://www.bsds.de · BSDS Braczek Software- und DatenSysteme |
| Webdesign · Webhosting · E-Commerce · Mambo Content Management |
------------------------------------------------------------ ----

Re: Fehlermeldung auf Rechner mit WIN"98

am 14.04.2006 19:57:05 von bettina

in $_SESSION["lang"] steht "ge", "en" oder "sp" respektive wenn ich die
verschiedene Sprache auswähle.
Die Totale die an Anfang berechnet werden und auch in SESSION Variables
geschspeichert werden, werden nur am Anfang angezeigt. Nach ich zurück
komme (von der Seite wo ich den Fehler hatte: breweries.php) werden
diese Totale nicht mehr angezeigt.
Etwas stimmt es nicht mit der Übertragung von SESSIONS Variables.
Aber wiese funktioniert es richtig auf PHP?

Danke im Voraus, Bettina

Re: Fehlermeldung auf Rechner mit WIN"98

am 14.04.2006 21:39:41 von Bodo Kaelberer

bettina@coaster.ch am 14 Apr 2006 10:57:05 -0700:

> Etwas stimmt es nicht mit der Übertragung von SESSIONS Variables.
> Aber wiese funktioniert es richtig auf PHP?

PHP? Du meinst XP?

Die Variablen einer Session werden nicht übertragen. Dass ist ja
gerade der Gag daran - die bleiben auf dem Server. Wenn da also ein
Wert aus der Session verloren geht, dass macht eines Deiner Scripte
das.

--
1 Bodo Kaelberer
123 http://www.webkind.de/ http://www.kaelberer-aio.de/
3 Dem Verständnis ist meist gut getan, wenn man richtig lesen
4 kann.

Re: Fehlermeldung auf Rechner mit WIN"98

am 14.04.2006 22:18:30 von bettina

Ja, ich meinte XP.
Kann ich etwas setzen in irgendein ini oder config Datei, dass dieses
Problem lösen könnte?
Liegt das am PHP 5.1.1? Was passiert wenn ich eine ältere Fatal error:
require() [function require]: Failed opening required
'lang..inc.php' (include_pathersion installiere?

Bodo Kaelberer schrieb:

> bettina@coaster.ch am 14 Apr 2006 10:57:05 -0700:
>
> > Etwas stimmt es nicht mit der Übertragung von SESSIONS Variables.
> > Aber wiese funktioniert es richtig auf PHP?
>
> PHP? Du meinst XP?
>
> Die Variablen einer Session werden nicht übertragen. Dass ist ja
> gerade der Gag daran - die bleiben auf dem Server. Wenn da also ein
> Wert aus der Session verloren geht, dass macht eines Deiner Scripte
> das.
>
> --
> 1 Bodo Kaelberer
> 123 http://www.webkind.de/ http://www.kaelberer-aio.de/
> 3 Dem Verständnis ist meist gut getan, wenn man richtig lesen
> 4 kann.

Re: Fehlermeldung auf Rechner mit WIN"98

am 14.04.2006 23:26:39 von Bodo Kaelberer

Hi Bettina

bettina@coaster.ch am 14 Apr 2006 13:18:30 -0700:

> Ja, ich meinte XP.
> Kann ich etwas setzen in irgendein ini oder config Datei, dass dieses
> Problem lösen könnte?

Ohne zu wissen, worauf das Problem genau zurückzuführen ist, kann man
das kaum sagen.

Du kannst natürlich mal die zwei inis vergleichen. Bzw. die Ausgabe
von phpinfo()

Wie ist denn auf beiden Rechnern die Ini-Einstellung für
register_globals?


> Liegt das am PHP 5.1.1? Was passiert wenn ich eine ältere Fatal error:
> require() [function require]: Failed opening required
> 'lang..inc.php' (include_pathersion installiere?

Vielleicht ist es tatsächlich ein Bug einer bestimmten PHP-Version.

Erst mal würde ich aber von einem Programm- oder Konfigurationsproblem
ausgehen. Mach mal grosszügig Debug-Ausgaben in Dein Script und finde
raus, ab wann genau der Wert nicht mehr in der Session ist und ob die
sonstigen Session-Werte noch vorhanden sind oder alle Werte fehlen.

--
1 Bodo Kaelberer
123 http://www.webkind.de/ http://www.kaelberer-aio.de/
3 Dem Verständnis ist meist gut getan, wenn man richtig lesen
4 kann.

Re: Fehlermeldung auf Rechner mit WIN"98

am 15.04.2006 00:55:17 von Thomas Hochstein

bettina@coaster.ch schrieb:

> Warning: require(lang..inc.php) [function require]: failed to open
> stream: No such file or directory in
> C:\XAMPP\xampp\htdocs\PHP_FILES\breweries.php on line 3

Sieht nach einer eleganten Möglichkeit für remote code inclusion aus.

Re: Fehlermeldung auf Rechner mit WIN"98

am 15.04.2006 01:34:56 von Bodo Kaelberer

Abend

Thomas Hochstein am Sat, 15 Apr 2006 00:55:17 +0200:

> bettina@coaster.ch schrieb:
>
> > Warning: require(lang..inc.php) [function require]: failed to open
> > stream: No such file or directory in
> > C:\XAMPP\xampp\htdocs\PHP_FILES\breweries.php on line 3
>
> Sieht nach einer eleganten Möglichkeit für remote code inclusion aus.

Man kann, wenn der Wert nicht validiert wird, am Datennamen spielen.
Aber Du kriegst keine URL hin oder einen absoluten lokalen Pfad.

Das ist IMHO nur dann ein Problem, wenn ein Angreifer Schreibzugriff
auf Bettinas Webspace oder auf Verzeichnisse des Include-paths hat.

Aber dann ist ohnehin Sense (-;

--
1 Bodo Kaelberer
123 http://www.webkind.de/ http://www.kaelberer-aio.de/
3 Dem Verständnis ist meist gut getan, wenn man richtig lesen
4 kann.

Re: Fehlermeldung auf Rechner mit WIN"98

am 15.04.2006 03:10:09 von Johannes Vogel

Hi Bodo

Bodo Kaelberer wrote:
> Thomas Hochstein am Sat, 15 Apr 2006 00:55:17 +0200:
>> bettina@coaster.ch schrieb:
>>> Warning: require(lang..inc.php) [function require]: failed to open
>>> stream: No such file or directory in
>>> C:\XAMPP\xampp\htdocs\PHP_FILES\breweries.php on line 3
>> Sieht nach einer eleganten Möglichkeit für remote code inclusion aus.
> Man kann, wenn der Wert nicht validiert wird, am Datennamen spielen.
> Aber Du kriegst keine URL hin oder einen absoluten lokalen Pfad.
> Das ist IMHO nur dann ein Problem, wenn ein Angreifer Schreibzugriff
> auf Bettinas Webspace oder auf Verzeichnisse des Include-paths hat.
> Aber dann ist ohnehin Sense (-;

Und was hindert sie, wenigstens eine Prüfung auf Länge zwei
durchzuführen? Oder dann, ob in_array($_GET['lang'],array('ge','en'...))
TRUE sei. Oder falls sie es dynamisch generieren möchte, kann sie ja das
Verzeichnis auslesen, alle lang.??.inc.php ausfiltern und die ?? in den
obigen array einlesen. Falls $_GET['lang'] dieser Prüfung nicht genügt,,
kann sie die Standard-Sprache verwenden. Empfehlenswert.

HTH, Johannes

Re: Fehlermeldung auf Rechner mit WIN"98

am 15.04.2006 09:30:55 von Thomas Hochstein

Bodo Kaelberer schrieb:

> Man kann, wenn der Wert nicht validiert wird, am Datennamen spielen.

Er wird nicht.

> Aber Du kriegst keine URL hin oder einen absoluten lokalen Pfad.

Stimmt wohl. Das ist aber vermutlich reines Glück. ;)

-thh

Re: Fehlermeldung auf Rechner mit WIN"98

am 15.04.2006 12:18:08 von bettina

Hallo Bodo,
Problem gelöst!
Beim vergleichen die zwei inis (Ausgabe von phpinfo()), waren die
Ini-Einstellung für
register_globals tatsächlich verschieden:
für PHP 5.0.5 register_globals =3D on
für PHP 5.1.1 register_globals =3D off
Ich habe für PHP 5.1.1 die register_globals auch auf ON gesetzt und
jetzt funktioniert es alles OK.
Im Dokument XAMPP-CHANGES.txt in gleicher Umgebung wo XAMPP installiert
wird steht:
02 Dec 2005 XAMPP 1.5.1 Beta 1
-some code cleanup (HTML: valid HTML4.01 / PHP: "register_globals =3D
Off")

Vielen Dank für die Hilfe!
Jetzt funktioniert die Homepage meiner Bierdeckelsammlung auch lokal
auf meinem alten Laptop. Rechtzeitig um nächsten Samstag an einer
Tauschbörse zu gehen !

Liebe Grüsse, Bettina

Re: Fehlermeldung auf Rechner mit WIN"98

am 15.04.2006 12:34:28 von Carsten Wiedmann

bettina@coaster.ch schrieb:

> register_globals tatsächlich verschieden:
> für PHP 5.0.5 register_globals = on
> für PHP 5.1.1 register_globals = off
> Ich habe für PHP 5.1.1 die register_globals auch auf ON gesetzt und
> jetzt funktioniert es alles OK.

Das war die schlechte Lösung. Ein Script sollte funktionieren egal wie
register_globals eingestellt ist. Und das sollte auf "off" stehen. (BTW
dachte ich du hättest jetzt überall die selbe Version?)

Dein Problem würde sich wohl schon dadurch lösen lassen, wenn du Die
Session-Variablen anders nennst als die Variablen im Script.

Gruß
Carsten

Re: Fehlermeldung auf Rechner mit WIN"98

am 15.04.2006 13:40:47 von Bodo Kaelberer

Hi

bettina@coaster.ch am 15 Apr 2006 03:18:08 -0700:

> Beim vergleichen die zwei inis (Ausgabe von phpinfo()), waren die
> Ini-Einstellung für
> register_globals tatsächlich verschieden:
> für PHP 5.0.5 register_globals = on
> für PHP 5.1.1 register_globals = off
> Ich habe für PHP 5.1.1 die register_globals auch auf ON gesetzt und
> jetzt funktioniert es alles OK.

ich hatte genau das Gegenteil erwartet. Dass es auf dem Rechner, auf
dem es nicht funktioniert, auf On ist und deswegen ein Wert aus der
Session im globalen Namensraum überschrieben wird.


> Vielen Dank für die Hilfe!
> Jetzt funktioniert die Homepage meiner Bierdeckelsammlung auch lokal
> auf meinem alten Laptop. Rechtzeitig um nächsten Samstag an einer
> Tauschbörse zu gehen !

Das wird ein Spass (-;

--
1 Bodo Kaelberer
123 http://www.webkind.de/ http://www.kaelberer-aio.de/
3 Dem Verständnis ist meist gut getan, wenn man richtig lesen
4 kann.

Re: Fehlermeldung auf Rechner mit WIN"98

am 15.04.2006 13:42:51 von Bodo Kaelberer

Hi Johannes

Johannes Vogel am Sat, 15 Apr 2006 03:10:09 +0200:

> Und was hindert sie, wenigstens eine Prüfung auf Länge zwei
> durchzuführen?

Nichts. Ich würde ja auch validieren. Aber im konkreten Fall sehe ich
kein Zusammenhang zwischen der Anzahl der Zeichen mitten im Dateinamen
und einem Sicherheitsrisiko.

Ich verwende für so etwas eine Whitelist der gültigen Sprachwerte.

--
1 Bodo Kaelberer
123 http://www.webkind.de/ http://www.kaelberer-aio.de/
3 Dem Verständnis ist meist gut getan, wenn man richtig lesen
4 kann.

Re: Fehlermeldung auf Rechner mit WIN"98

am 15.04.2006 13:46:37 von Johannes Vogel

Hi Bodo

Bodo Kaelberer wrote:
> Johannes Vogel am Sat, 15 Apr 2006 03:10:09 +0200:
>> Und was hindert sie, wenigstens eine Prüfung auf Länge zwei
>> durchzuführen?
> Nichts. Ich würde ja auch validieren. Aber im konkreten Fall sehe ich
> kein Zusammenhang zwischen der Anzahl der Zeichen mitten im Dateinamen
> und einem Sicherheitsrisiko.

Es ist besser als nichts! ('wenigstens')

> Ich verwende für so etwas eine Whitelist der gültigen Sprachwerte.

Das habe ich ja als nächsten Punkt aufgeführt. Wobei ich noch darauf
einging, dass diese Whitelist eben aus dem Filesystem generiert werden
kann. So kann man einfach eine Datei hinzufügen und muss im Code nichts
ändern.

Johannes

Re: Fehlermeldung auf Rechner mit WIN"98

am 15.04.2006 14:36:56 von Bodo Kaelberer

Hi

Johannes Vogel am Sat, 15 Apr 2006 13:46:37 +0200:

> >> Und was hindert sie, wenigstens eine Prüfung auf Länge zwei
> >> durchzuführen?
> > Nichts. Ich würde ja auch validieren. Aber im konkreten Fall sehe ich
> > kein Zusammenhang zwischen der Anzahl der Zeichen mitten im Dateinamen
> > und einem Sicherheitsrisiko.
>
> Es ist besser als nichts! ('wenigstens')

Welchen Sicherheitsgewinn siehst Du da?


> > Ich verwende für so etwas eine Whitelist der gültigen Sprachwerte.
>
> Das habe ich ja als nächsten Punkt aufgeführt. Wobei ich noch darauf
> einging, dass diese Whitelist eben aus dem Filesystem generiert werden
> kann. So kann man einfach eine Datei hinzufügen und muss im Code nichts
> ändern.

Du kannst doch nicht einerseits eine Gefahr im Dateinamen sehen, die
nur dann existiert, wenn jemand Zugriff auf den Webspace hat, aber
andererseits sagen, dass allein die Existenz einer passenden Datei
schon genügt, dass ein Wert gültig ist.



--
1 Bodo Kaelberer
123 http://www.webkind.de/ http://www.kaelberer-aio.de/
3 Dem Verständnis ist meist gut getan, wenn man richtig lesen
4 kann.

Re: Fehlermeldung auf Rechner mit WIN"98

am 15.04.2006 17:22:57 von Johannes Vogel

Hi Bodo

Bodo Kaelberer wrote:
> Johannes Vogel am Sat, 15 Apr 2006 13:46:37 +0200:
>>>> Und was hindert sie, wenigstens eine Prüfung auf Länge zwei
>>>> durchzuführen?
>>> Nichts. Ich würde ja auch validieren. Aber im konkreten Fall sehe ich
>>> kein Zusammenhang zwischen der Anzahl der Zeichen mitten im Dateinamen
>>> und einem Sicherheitsrisiko.
>> Es ist besser als nichts! ('wenigstens')
> Welchen Sicherheitsgewinn siehst Du da?

Falls irgendwer eine Idee hat, wie man mit en.inc.php/../../ ...
irgendwie irgendwas bauen könnte, dann ist wenigstens das nicht möglich.

>>> Ich verwende für so etwas eine Whitelist der gültigen Sprachwerte.
>> Das habe ich ja als nächsten Punkt aufgeführt. Wobei ich noch darauf
>> einging, dass diese Whitelist eben aus dem Filesystem generiert werden
>> kann. So kann man einfach eine Datei hinzufügen und muss im Code nichts
>> ändern.
> Du kannst doch nicht einerseits eine Gefahr im Dateinamen sehen, die
> nur dann existiert, wenn jemand Zugriff auf den Webspace hat, aber
> andererseits sagen, dass allein die Existenz einer passenden Datei
> schon genügt, dass ein Wert gültig ist.

Wann habe ich gesagt, dass die Gefahr nur bestehen würde, wenn jemand
Zugriff auf den Diskspace hätte? Das kam ja von dir selbst.

Johannes

Re: Fehlermeldung auf Rechner mit WIN"98

am 15.04.2006 21:01:31 von Bodo Kaelberer

Johannes Vogel am Sat, 15 Apr 2006 17:22:57 +0200:

> Hi Bodo
>
> >>> Nichts. Ich würde ja auch validieren. Aber im konkreten Fall sehe ich
> >>> kein Zusammenhang zwischen der Anzahl der Zeichen mitten im Dateinamen
> >>> und einem Sicherheitsrisiko.
> >> Es ist besser als nichts! ('wenigstens')
> > Welchen Sicherheitsgewinn siehst Du da?
>
> Falls irgendwer eine Idee hat, wie man mit en.inc.php/../../ ...
> irgendwie irgendwas bauen könnte, dann ist wenigstens das nicht möglich.

Ach stimmt. Die gibt's ja auch noch.


> > Du kannst doch nicht einerseits eine Gefahr im Dateinamen sehen, die
> > nur dann existiert, wenn jemand Zugriff auf den Webspace hat, aber
> > andererseits sagen, dass allein die Existenz einer passenden Datei
> > schon genügt, dass ein Wert gültig ist.
>
> Wann habe ich gesagt, dass die Gefahr nur bestehen würde, wenn jemand
> Zugriff auf den Diskspace hätte? Das kam ja von dir selbst.

Ist ja auch so. Eine Url kann man nicht draus machen, also kann die
Gefahr nur von einer lokalen Datei ausgehen.

--
1 Bodo Kaelberer
123 http://www.webkind.de/ http://www.kaelberer-aio.de/
3 Dem Verständnis ist meist gut getan, wenn man richtig lesen
4 kann.

Re: Fehlermeldung auf Rechner mit WIN"98

am 18.04.2006 10:25:21 von Frank Schenk

bettina@coaster.ch wrote:
> Hallo Bodo,
> Problem gelöst!
> Beim vergleichen die zwei inis (Ausgabe von phpinfo()), waren die
> Ini-Einstellung für
> register_globals tatsächlich verschieden:
> für PHP 5.0.5 register_globals = on
> für PHP 5.1.1 register_globals = off
> Ich habe für PHP 5.1.1 die register_globals auch auf ON gesetzt und
> jetzt funktioniert es alles OK.

PHP 5.1.1 ist kaputt (buggy) und du solltest auf 5.1.2 updaten.


gruß, Frank