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 ![]() modedit Editiert von pq: teilbaum Last edited: 2013-03-28 12:26:21 +0100 (CET) |