Thread Benutzername u. Passwortabfrage mit Perl/CGI (9 answers)
Opened by maxtorman at 2010-02-14 00:08

frankes
 2010-02-14 10:22
#132946 #132946
User since
2005-04-02
140 Artikel
BenutzerIn

user image
Hallo maxtorman

Wie Bianca schon schrieb, wäre es interessant was du zur Umsetzung bereits selbst geplant hast.

Eine Login-Auswertung selbst ist eigentlich recht schnell erstellt.
Am einfachsten dürfte wohl die Verwendung des Moduls CPAN:CGI für deine Aufgabe sein.

Hilfen zum Thema findest du auch hier Wiki:CgiSicherheit

Ein ganz grober Vorschlag für eine Lösung.
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
#!/usr/bin/perl -T  
# Taint Modus: Warnt, wenn man ungeprüfte Werte benutzt.
 

use strict;
use warnings;
use Fcntl qw(:DEFAULT :flock);
use CGI::Carp qw/fatalsToBrowser/;   # Fürs Entwickeln, damit Fehler im Browser erscheinen. - Später auskommentieren.
use CGI;

$CGI::DISABLE_UPLOADS = 1; # kein Upload
$CGI::POST_MAX=1024*50; # max angenommene Datenmenge hier 50K

my $cgi = $CGI->new(); # Objekt erstellen
$cgi->cgi_error() and die $Cgi->cgi_error(); # Cgi Fehler

# Abfragen, ob Login Parameter vorliegen.
# Gehe davon aus, dass die HTML Formularfelder 'name' und 'passwort' genannt wurden.

my $login = 0; # 1 = Benutzer hat sich angemeldet

if (
      defined $cgi->param('name')
      && defined $cgi->param('passwort')
   ){

        sysopen (DAT,'PfadZurDatei',O_RDONLY) or die;
                flock (DAT, LOCK_SH) or die;

                while (<DAT>)
                  {
                        chomp; # Newsline entfernen
                        (my $name, my $pass)    = split ',';

                        if (
                             $name eq $cgi->param('name')
                             && $pass eq $cgi->param('passwort')
                           ){
                              $login = 1;
                              last; #while Schleife verlassen.
                            }
                  }
         
        close DAT;

        if ($login) { ... mach was }

    }

 ...Gib das Login Formular aus

...


Für das Login Formular gibt es mehrere Möglichkeiten:

- arbeit mit HTML Templates.
- direkt mit dem Modul CGI eine HTML Seite erstellen und ausgeben
- mittels here Dokument den Seitencode ausgeben.
- Redirect auf eine bestehende HTML Seite.

Spannender sind aber die Fragen, wie es dann weiter gehen soll.
- Wie hält man den Benutzer nun als Angemeldet (cookie, URL-Erweiterung etc.)
- Wie kontrolliere ich bei weiteren Seiten, ob der Benutzer angemeldet ist.

Dafür gibt es viele Möglichkeiten aber ich weiss nicht, was du genau planst.


Edit: verklickt noch mal
Last edited: 2010-02-14 11:00:35 +0100 (CET)

View full thread Benutzername u. Passwortabfrage mit Perl/CGI