Session-Problem
Peter
- php
0 Andreas Korthaus0 Tom0 Peter0 wahsaga0 Peter
0 Andreas Korthaus
Hallo!
Ich hab mich grad mal so ein bisschen in die Session-Problematik reingefuchst, alllerdings gibt es da noch allerhand Probleme.
Z. B. folgendes:
Session1.php
<?PHP
session_start();
$_SESSION["name"]= $name;
echo $_SESSION["name"]
?>
<a href="session2.php">klick</a>
<? $name = "Test";
session_register('name'); ?>
Session2.php
<?php
session_start();
if(!isset($_SESSION["name"])) {
echo("session var nicht gesetzt");}
else {
echo("session var gesetzt!<br>");
echo $_SESSION["name"];}
session_destroy();
?>
Wenn ich bei session1.php auf den Link klicke, gelange ich zwar zu session2.php, es wird aber kein "Test" übergeben.
Erst wenn ich noch einmal zurückgehe und nochmal auf den Link klicke, erscheint bei session2.php "Test". Woran kann das liegen?
Danke, für die Hilfe :-))
Hi!
Also den Sinn dieses Scriptes verstehe ich nicht ;-)
<?PHP
session_start();$_SESSION["name"]= $name;
Woher kommt $name?
echo $_SESSION["name"]
?>
<a href="session2.php">klick</a><? $name = "Test";
session_register('name'); ?>
Man sollte nicht session_register() und $_SESSION zusammen verwenden:
" Aus Gründen der Verbesserung der Sicherheit und der Lesbarkeit des Codes wird die Verwendung von $_SESSION (oder $HTTP_SESSION_VARS bei PHP 4.0.6 oder niedriger) empfohlen. Mit $_SESSION werden die Funktionen session_register(), session_unregister() und session_is_registered() nicht benötigt. Auf die Session-Variablen kann wie auf jede normale Variable zugegriffen werden."
Quelle: http://de3.php.net/manual/de/ref.session.php
"Achtung
Wenn Sie $_SESSION (oder $HTTP_SESSION_VARS) verwenden, sollten Sie nicht session_register(), session_is_registered() und session_unregister() verwenden. "
Quelle: http://de3.php.net/manual/de/function.session-register.php
Viele Grüße
Andreas
Hello,
Man sollte nicht session_register() und $_SESSION zusammen verwenden:
Man sollte auch nicht $_SESSION und $HTTP_SESSION_VARS gemeinsam verwenden, da es sich um zwei unterschiedliche Arrays handelt. Dies nur so zur Ergänzung, da das auch mal eine meiner Fragen war.
Man sollte die Erzeugung der alten $HTTP_x Variablen auch abschalten, da sie unnütz Speicherplatz kosten. das geht aber wohl erst mit der nächsten PHP-Version.
Liebe Grüße aus http://www.braunschweig.de
Tom
Vielen Dank! Jetzt klappt's!
Ich hab nur nochmal eine Frage: Ich lese überall, dass bei sessions cookies erzeugt werden. Nach meinem Verständnis wird aber nur so eine session-datei im /tmp Verzeichnis des Servers erstellt und nach der Sitzung wieder gelöscht. Bei mir wwerden keine Cookies erzeugt!Es klappt auch, wenn Cookiess nicht angenommen werden.
Woran liegt das?
hi,
Ich hab nur nochmal eine Frage: Ich lese überall, dass bei sessions cookies erzeugt werden. Nach meinem Verständnis wird aber nur so eine session-datei im /tmp Verzeichnis des Servers erstellt und nach der Sitzung wieder gelöscht. Bei mir wwerden keine Cookies erzeugt!Es klappt auch, wenn Cookiess nicht angenommen werden.
php versucht in der standardeinstellung zunächst einmal, ein cookie zu setzen. wird dieses beim nächsten request vom client wieder mit zurückgeschickt, stellt php die übermittlung der session-id komplett auf cookie um.
als sicherheit hat php aber nach dem start der session die session-id auch an alle links angehängt - stellt sich also heraus, dass das mit dem cookie nicht geklappt hat, wird die session-id auch weiterhin auf allen weiteren seiten per GET übergeben.
gruss,
wahsaga
Aha, so langsam beginne ich zu verstehen *gg*
WEnn also keine Cookies gesetzt werden, wird die sessionid an die url angehängt. Right? Dabei stellt sich bei mir aber die Frage, wieso bei mir keines der beiden Fälle zutrifft. Also weder Cookie noch URL Parameter...
Hallo!
WEnn also keine Cookies gesetzt werden, wird die sessionid an die url angehängt. Right? Dabei stellt sich bei mir aber die Frage, wieso bei mir keines der beiden Fälle zutrifft. Also weder Cookie noch URL Parameter...
Woher weißt Du denn das nicht eines von beiden zutrifft?
Hast Du Cookies komplett deaktiviert? Also auch Session-Cookies? Hast Du im Browser mal in den HTML-Quelltext gesehen?
Grüße
Andreas
Hast Du Cookies komplett deaktiviert? Also auch Session-Cookies? Hast Du im Browser mal in den HTML-Quelltext gesehen?
Also ist die rede von session-cookies. die werden doch in dem /tmp Verzeichnis auf dem server gespeichert, oder? die werden bei mir gespeichert!was soll ich denn im quelltext sehen?
Moin!
Hast Du Cookies komplett deaktiviert? Also auch Session-Cookies? Hast Du im Browser mal in den HTML-Quelltext gesehen?
Also ist die rede von session-cookies. die werden doch in dem /tmp Verzeichnis auf dem server gespeichert, oder?
Nein. Die werden auch vom Client-Browser gespeichert. Aber nicht zwingend auf Festplatte, sondern vermutlich einfach nur irgendwo im Speicher.
Ein Cookie ist ein Cookie ist ein Cookie. Lediglich die Gültigkeitsdauer ist jeweils unterschiedlich.
Lass dir sämtliche zu setzenden Cookies von deinem Browser anzeigen. Erst dann weißt du, ob du ein Cookie kriegst, oder nicht.
- Sven Rautenberg
Hi!
Also ist die rede von session-cookies. die werden doch in dem /tmp Verzeichnis auf dem server gespeichert, oder?
Nein, da werden die zugehörigen Session-Daten gespeichert. Die Cookies werden vom Webserver an den Browser geschickt, und der speichert die zwischen.
die werden bei mir gespeichert!
was wird bei Dir gespeichert? Bedenke dass bei Sessions nur die Session-ID per Cookie/URL an den Browser übergeben wird, die Daten die man in die Session schreibt werden auf dem Server gespeichert, und dem entsprechenden Client der die korrekte SessionID sendet wieder zugeordnet.
was soll ich denn im quelltext sehen?
Wenn Dein Browser keine Cookies annimmt solltest Du da einen an die Links angehängten Parameter sehen, wenn Dein PHP entsprechend konfiguriert ist.
Ich würde mir mal in Ruhe folgendes durchlesen:
http://www.dclp-faq.de/q/q-sessions-zweck.html
http://de3.php.net/manual/de/ref.session.php
btw., kann mir mal jemand folgenden Satz zum Beispiel erklären:
Beispiel:
Hier gehts <A HREF="nextpage.php?<?php echo strip_tags (SID)?>">weiter</A>
"Die Funktion strip_tags() wird verwendet, um bei der Ausgabe der SID XSS-ähnliche Angriffe zu verhindern."
XSS-Angriffe sind glaube ich cross-site-scripting Angriffe, oder?
Nur - was hat man davon, da sich eine Manipulation der SessionID ja sowieso nur auf den eigenen Client auswirken würde?
Grüße
Andreas
Hi!
btw., kann mir mal jemand folgenden Satz zum Beispiel erklären:
Beispiel:
Hier gehts <A HREF="nextpage.php?<?php echo strip_tags (SID)?>">weiter</A>"Die Funktion strip_tags() wird verwendet, um bei der Ausgabe der SID XSS-ähnliche Angriffe zu verhindern."
XSS-Angriffe sind glaube ich cross-site-scripting Angriffe, oder?
Nur - was hat man davon, da sich eine Manipulation der SessionID ja sowieso nur auf den eigenen Client auswirken würde?
Oder geht es nur darum dass jemand böse Links auf so eine Seite erzeugen könnte?
Grüße
Andreas
Oder geht es nur darum dass jemand böse Links auf so eine Seite erzeugen könnte?
Es soll vermieden werden, dass jemand ohne login auf dateien zugreift!
Hi!
Oder geht es nur darum dass jemand böse Links auf so eine Seite erzeugen könnte?
Es soll vermieden werden, dass jemand ohne login auf dateien zugreift!
Das meine ich nicht. Ich meine, wogegen "strip_tags()" genau schützen soll.
Grüße
Andreas
Hello,
Das meine ich nicht. Ich meine, wogegen "strip_tags()" genau schützen soll.
Vor allem, da SID intern vom Server erstellt wird, man also von Außen überhaupt keine Möglichkeit hat, darauf zuzugreifen. Gibts da etwa ein exploit?
Liebe Grüße aus http://www.braunschweig.de
Tom
Hi Tom!
Das meine ich nicht. Ich meine, wogegen "strip_tags()" genau schützen soll.
Vor allem, da SID intern vom Server erstellt wird, man also von Außen überhaupt keine Möglichkeit hat, darauf zuzugreifen. Gibts da etwa ein exploit?
Oh, man hat Zugiff, über
http://www.example.com/script.php?PHPSESSID=meine_boese_session_id
<?php
session_start();
echo session_id();
?>
das funktioniert. Ich bin da kein Fachmann, aber man kann darüber sicherlich so schöne Sachen wie <iframe...> oder irgendwelche Javascripte... einschleusen, die derjenige der auf den Link klickt dann abbekommt.
Wenn man strip_tags() drauf anwendet wird sowas halt rausgefiltert. Ist das die Gefahr? Oder gibt es noch was anders?
Grüße
Andreas
PS: bin gerade mit nem Celeron 433 und 64 Mb RAM online, mit Knoppix und KDE, das ist keine Freude... ;-)
Hallo!
Ich hab nur nochmal eine Frage: Ich lese überall, dass bei sessions cookies erzeugt werden.
Wo ist "überall"? Es gibt mehrere Möglichkeiten die SessionID zu übertragen, das steht auch im Manual erklärt.
Siehe: http://de3.php.net/manual/de/ref.session.php#session.idpassing
Vielleicht ist auch [link.http://www.dclp-faq.de/q/q-sessions-methode.html] interessant für Dich.
Nach meinem Verständnis wird aber nur so eine session-datei im /tmp Verzeichnis des Servers erstellt und nach der Sitzung wieder gelöscht. Bei mir werden keine Cookies erzeugt!Es klappt auch, wenn Cookiess nicht angenommen werden.
Woran liegt das?
Guck mal im Browser in den HTML-Quelltext. Fällt Dir bei den Links irgendwas auf? Entsprechendes passiert mit Formularen.
Grüße
Andreas