ppmk22
Goto Top

Was darf man alles in Session Variablen packen und wie viel?

Hallöchen

Jetzt komme ich bestimmt mit einer richtig blöden Frage daher, aber kann ich in eine Session Variablen alles rein packen was ich will?
z.B.:
<?php
$_SESSION["inhalt"] = '  
                        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//DE">  
                        <html>
                            <head>
                                <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">  
                                <title></title>
                            </head>
                            <body>
                                <?php
                                    echo "Hello World";  
                                ?>
                            </body>
                        </html>
                      ';  
?>

LG
Petra

Content-ID: 160116

Url: https://administrator.de/forum/was-darf-man-alles-in-session-variablen-packen-und-wie-viel-160116.html

Ausgedruckt am: 26.12.2024 um 00:12 Uhr

StefanKittel
StefanKittel 04.02.2011 um 10:04:20 Uhr
Goto Top
Moin,
soweit ist weiß gibt es keine Größenbeschränkungen für Sessionvariablen. Außer den normalen Memory-Limit.
Hast Du es mal ausprobiert? Also ob die Sonderzeichen alle funktionieren? Zeilenumbrüche?

Ich würde es aus Sicherheitsgrüßen nicht empfehlen, da darüber Jemand in Deine Seite fremden Inhalt "einfügen" kann.

Stefan

Edit: Ich man mal aus dem "nicht empfehlen" ein "dringend abraten".
bankaifan
bankaifan 04.02.2011 um 10:08:36 Uhr
Goto Top
Moin.

Edit: Ich man mal aus dem "nicht empfehlen" ein "dringend abraten".

oder ein "sehr gefährlich".

Das sind gerade solche Lücken nach denen Hacker suchen. Die könnten dann darüber jeglichen Code einschleußen.

Ich bin mir ziemlicher sicher, dass es geht. Aber ich kann dir so wie Stefan nur davon abraten.

Grüße

Bankaifan
ppmk22
ppmk22 04.02.2011 um 10:13:16 Uhr
Goto Top
Oh danke für die schnelle Antwort.
Schade das wäre auch zu einfach gewesen. Probiert hatte ich es schon, ging auch soweit, wollte nur wissen ob was dagegen spricht.
Dann werde ich mir was anderes überlegen, danke nochmal.

LG
P
EvilMoe
EvilMoe 04.02.2011 um 11:27:18 Uhr
Goto Top
Nun, eine Session bzw. die Daten der Session werden auf dem Server gespeichert, nicht wie bei Cookies. Daher sollte das relativ sicher sein.
Wenn ein hacker natürlich dann Code einschleusen kann wrde ich mir über andere Sachen gedanken machen als ob jemand versucht Session zu manipulieren...


Die Frage ist warum möchtest du soviel Code in einer Session speichern? Was hast du vor? Vielleicht habe wir ja eine andere "schönere" Lösung.
SlainteMhath
SlainteMhath 04.02.2011 um 11:29:14 Uhr
Goto Top
Moin,

also eine Sicherheitslücke sehe ich, im Gegensatz zu Stefan und Bankaifan nicht. Der Inhalt von $_SESSION wird auf dem Server (entweder in /tmp oder in einer DB) gespeichert. Der Client bekommt lediglich ein Cookie mit einer eindeutigen Sessionlennung. Der Inhalt von $_SESSION wird also nie zum Client übertragen.

Ob es jedoch sinnvoll ist ein kompletten Sourcecode einer Seite incl. PHP Tags usw in $_SESSION zu speichern kommentiere ich jetzt allerdings nicht face-smile

lg,
Slainte

/EDIT: Mist zu langsam ^^
StefanKittel
StefanKittel 04.02.2011 um 11:36:49 Uhr
Goto Top
Das Problem sehe ich wenn Jemand anderes die Seite aufruft.

Also z.B. www.bank-schnuedelsheim.de?Content="Böser Inhalt".

Stefan
EvilMoe
EvilMoe 04.02.2011 um 11:42:49 Uhr
Goto Top
Wo ist da das Problem, andere Seiten haben auf die Session keinen Zugriff.

EDIT: Man sollte aber niemals versuchen die Session ID an die URL anzuhängen, dies wäre ein deutliches Sicherheitsrisiko!
SlainteMhath
SlainteMhath 04.02.2011 um 11:47:36 Uhr
Goto Top
Also z.B. www.bank-schnuedelsheim.de?Content="Böser Inhalt".
Ja, das hat aber nix mit $_SESSION zu tun, sondern eher mit register_globals=on|off bzw. schlechter/schlampiger Programmierung face-smile
StefanKittel
StefanKittel 04.02.2011 um 11:51:44 Uhr
Goto Top
Zitat von @SlainteMhath:
schlechter/schlampiger Programmierung face-smile
und wer verwendet als Session Variablen mehr als nur IDs face-smile
dog
dog 04.02.2011 um 11:53:48 Uhr
Goto Top
PHPs Session-Mechanismus basiert darauf, dass der User einen Key bekommt, der einer Datei auf der Festplatte entspricht, die serialisierte PHP-Daten enthält.

Du kannst also soviel rein packen wie du a) auf die Festplatte und b) in PHPs RAM bekommst
und was du an Inhalten reinpackst hängt davon ab, wer auf dem Server noch die Session-Dateien lesen kann.

Edit: Ich man mal aus dem "nicht empfehlen" ein "dringend abraten".

Ist also was die Standard-Implementation von SESSSION angeht quatsch, der Browser kann nämlich niemals die eigentlichen Inhalte sehen.

Also z.B. www.bank-schnuedelsheim.de?Content="Böser Inhalt".

Auch das ist erstmal unerheblich.
Dazu müsste man zuerst register_globals benutzen, was heute kaum noch irgendwo der Fall ist und dann müsste der Beispiel-Code oben konditional sein.
Wenn er unkonditional ist überschreibt der PHP-Code natürlich irgendwelche Übergaben.

und wer verwendet als Session Variablen mehr als nur IDs

Auf großen Seiten mit mehreren Servern (z.B. flickr) ist es durchaus üblich die Sessions auf dem Client abzuladen, damit die User zwischen den Servern wechseln können, das sieht dann so aus:

cookie = aes($key,$daten).hash($hashkey.$daten)

EDIT: Man sollte aber niemals versuchen die Session ID an die URL anzuhängen, dies wäre ein deutliches Sicherheitsrisiko!

Nicht mehr als im Cookie.
Beides wird per HTTP übertragen, beides kann von einem Proxy-Admin problemlos abgefangen werden.
Das einzige theoretische Risiko ist, dass ein User so eine URL mit Session-ID kopiert und wem anders schickt.
Da PHP aber die Sessions standardmäßig an UA-String und IP bindet ist das auch nur in speziellen Situationen ein Risiko.
Hässlich ist es immer.
ppmk22
ppmk22 04.02.2011 um 11:54:27 Uhr
Goto Top
Ich rufe z.B. die index.php auf, dort wird dann in Link betätigt der per get oder post eine abfrage.php aufruft. Dort wird dann eine sql Abfrage gemacht. Das Ergebnis wollte ich dann in eine Session Variablen packen und dann diesen hier header("location:../index.php"); Da soll der Inhalt der Session wieder ausgegeben werden. Nun kann es aber sein das mit dem Ergebnis noch etwas mehr mit muss wie z.B.: <div> <li> usw. mit soll. So war es gedacht. Was meint Ihr?
ppmk22
ppmk22 04.02.2011 um 12:16:27 Uhr
Goto Top
Ich glaube meine Antwort ist jetzt untergegangen, aber wenn ich das jetzt richtig verstanden habe, spricht da nichts gegen.

Ich rufe z.B. die index.php auf, dort wird dann in Link betätigt der per get oder post eine abfrage.php aufruft. Dort wird dann eine sql Abfrage gemacht. Das Ergebnis wollte ich dann in eine Session Variablen packen und dann diesen hier header("location:../index.php"); Da soll der Inhalt der Session wieder ausgegeben werden. Nun kann es aber sein das mit dem Ergebnis noch etwas mehr mit muss wie z.B.: <div> <li> usw. mit soll. So war es gedacht.