Thread Session-ID wird nicht generiert
(68 answers)
Opened by anamollo4music at 2013-03-26 08:23
Zwei funktionsfähige Beispiele zum Lernen, aber nicht auf Bugs getestet:
login.pl Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 #!/usr/bin/perl use strict; use warnings; use CGI::Session; use CGI; my $SIDNAME = CGI::Session->name(); my $cgi = CGI->new; my $sid = $cgi->cookie($SIDNAME) || $cgi->param($SIDNAME) || undef; my $session = CGI::Session->load() or die CGI::Session->errstr(); if ( $session->is_empty ) { $session = CGI::Session->new() or die CGI::Session->errstr(); } if ( $session->is_expired() ) { print $session->header(), $cgi->start_html(), $cgi->p("Your session timed out! Refresh the webpage!"), $cgi->end_html(); exit(0); } $sid = $session->id; my $cookie = $cgi->cookie( -name => $SIDNAME, -value => $sid ); my $username = $cgi->param('user') || ''; my $password = $cgi->param('pwd') || ''; if ( $username ne '1' or $password ne '1' ) { # Loginparameter falsch print $session->header; print qq( <h1>Login</h1> <form action="?$SIDNAME=$sid" method="POST"> <p> User : <input type="text" name="user"> <br> Passwort: <input type=text name="pwd"> <br> <input type="submit" value="Login"> <input type="hidden" name="$SIDNAME" value="$sid"> </p> </form> ); exit; } else { # Login ok! $session->param( 'user', $username ); $session->param( 'loggedin', 1 ); $session->param( 'lastvisit', "" . localtime() ); print $session->header( -location => "intro.pl?$SIDNAME=$sid", -cookie => $cookie, ); } intro.pl Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #!/usr/bin/perl use strict; use warnings; use CGI; use CGI::Session; my $SIDNAME = CGI::Session->name(); my $cgi = CGI->new; my $sid = $cgi->cookie($SIDNAME) || $cgi->param($SIDNAME) || undef; my $session = CGI::Session->load() or die CGI::Session->errstr(); my $logged = $session->param('loggedin'); if ($logged) { my $user = $session->param('user'); my $lasttime = $session->param('lastvisit'); print $session->header, <<HTML; <h1>Varry Sekret Webpadge</h1> <p>Hello <i>$user</i>,<br>you visited us at <tt>$lasttime</tt></p> <p>Pictures : <a href="http://example.org/oaioi/lil-iiii.html">of Lilly</a></p> HTML } else { # Login print $session->header( -location => 'login.pl' ); } //EDIT: Hinweis zur Sicherheit von intro.pl. Wer die Session-ID aus dem Cookie klaut hat natürlich Zugriff, ich weiß ja nicht wie die Anforderungen sind. Im Grund genommen müsste nochmals ein extra Wert mitgeführt werden. Wie von pq in 606832 erwähnt. modedit Editiert von pq: teilbaum Last edited: 2013-03-28 12:26:21 +0100 (CET) |