Schrift
[thread]26[/thread]

Paßwortgeschützter Bereich



<< >> 8 Einträge, 1 Seite
Drain
 2003-08-29 16:21
#2291 #2291
User since
2003-08-21
26 Artikel
BenutzerIn
[default_avatar]
Ich habe ein Skript, mit dem eine Paßwortabfrage durchgeführt wird und nur bei Berechtigung auf gewisse Seiten weiterleitet. Soweit so gut.
Aber die Seiten werden ja eigentlich nicht wirklich geschützt, sondern eben nur der Link (bzw. das Wissen über diesen). Im Prinzip kann man, sobald man den Link kennt, diese Abfrage einfach umgehen.
Gibt es da eine einfache Möglichkeit, diese Lücke zu schließen. Muß kein 100%iger Schutz sein, aber ein bißchen besser als jetzt wäre schon wünschenswert.
htaccess-Technik wird von meinem Server soweit ich weiß nicht unterstützt.

Grüße Drain
snadra
 2003-08-29 16:32
#2292 #2292
User since
2003-08-11
265 Artikel
BenutzerIn
[Homepage] [default_avatar]
Du kannst auch in den Scripten eine Authentifizierung vornehmen.
Der User und das Passwort findest Du in den Umgebungsvariablen, also frage einfach ob sie gesetzt sind, ansonsten sende einen Authentifizierungsfehler (ich glaube das war 403) oder redirecte (header) woanders hin.
http://hamburg.pm.org
jeden 2. mittwoch im monat
--
#!/usr/bin/perl -w
$l=join('',map chr,(116,110,105,114,112))if$^T;
!!$$?@_=qw(Jhfg Aabgure Prey Hnpxre):$l=1;
for(@_){eval reverse($l)."'"._(_(_($_))).' \''}
sub _{$_=~y+a-z+n-za-m+and pop}
Strat
 2003-08-29 16:35
#2293 #2293
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Das kann man ein wenig sicherer machen, wenn du bei der Anmeldung eine eindeutige ID vergibst und die dann durchreichst. Nur darf dann das Empfaengerdokument keine HTML- (oder sonstige statische) Seite sein, sondern muss was sein, was die ID ueberpruefen und auswerten kann (z.B. Perl/CGI).
Die statischen Seiten wuerde ich dann ausserhalb des Webverzeichnisses lagern und ueber
Code: (dl )
1
2
3
4
5
6
7
8
unless (open (FILE, $filename)) {
 &ErrorPage(....)
}
else {
 print "Content-type: text/html\n\n"; # oder so
 print while <FILE>;
 close (FILE);
} # else

zurueckgeben. (Bei Bildern und sonstigen binaeren Inhalten binmode(FILE); binmode(STDOUT); nicht vergessen)\n\n

<!--EDIT|Strat|1062160586-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Drain
 2003-08-29 17:15
#2294 #2294
User since
2003-08-21
26 Artikel
BenutzerIn
[default_avatar]
[quote=snadra,29.08.2003, 14:32]Du kannst auch in den Scripten eine Authentifizierung vornehmen.
Der User und das Passwort findest Du in den Umgebungsvariablen, also frage einfach ob sie gesetzt sind, ansonsten sende einen Authentifizierungsfehler (ich glaube das war 403) oder redirecte (header) woanders hin.[/quote]
Das habe ich doch so gemacht. Mein Skript wertet aus, ob die eingegebenen Daten korrekt sind.
Korrekt ==> redirect log.htm
Falsch ==> redirect error.htm

Dann kann man aber auch direkt über die Linkeingabe zu log.htm gelangen, was nicht sein soll.
Drain
 2003-08-29 17:24
#2295 #2295
User since
2003-08-21
26 Artikel
BenutzerIn
[default_avatar]
[quote=Strat,29.08.2003, 14:35]Das kann man ein wenig sicherer machen, wenn du bei der Anmeldung eine eindeutige ID vergibst und die dann durchreichst. Nur darf dann das Empfaengerdokument keine HTML- (oder sonstige statische) Seite sein, sondern muss was sein, was die ID ueberpruefen und auswerten kann (z.B. Perl/CGI).
Die statischen Seiten wuerde ich dann ausserhalb des Webverzeichnisses lagern und ueber [...]
zurueckgeben. (Bei Bildern und sonstigen binaeren Inhalten binmode(FILE); binmode(STDOUT); nicht vergessen)[/quote]
Wenn ich dich richtig verstehe, soll ich keine HTML-Seite mit redirect laden, sondern diese Seite erst bei Anfrage mit Perl erstellen. Entweder direkt in dem Skript, in dem ich die Paßwortabfrage durchführe, oder in einem eigenen Skript. Kann man von einem Perlskript direkt ein weiteres Perlskript aufrufen? Z.B.
Code (perl): (dl )
print $cgi->redirect(-url => "scripts/html_login.pl");

Dadurch, daß ein Skript aufgerufen wird, kann der Anwender nicht direkt auf die (zu schützende) Seite zugreifen.
Aber wofür brauch ich dann das mit der ID?
Thorium
 2003-08-29 17:48
#2296 #2296
User since
2003-08-04
232 Artikel
BenutzerIn
[Homepage] [default_avatar]
Was er sagen will ist, dass sich das Perlscript die Dateien, die du dem User geben willst, selber holt. Also sind die Dateien nur über genau dein Script erreichbar, auf keinenfall anders.
So bastelst du z.b. sowas:
/cgi-bin/login.pl <- dein Auth-Script
/secure/ <- dem Verzeichnis nur dem Script rechte geben, nicht aber allen. Oder du schmeisst dieses Verzeichnis einfach ins cgi-bin worauf es automatisch gegen Griffe von aussen gesichert ist.
Dann machst du im Scritp eine abfrage nach der Variable "url" z.b.
Wenn der User sich nun richtig eingeloggt hat:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
if (-f "/secure/$url") {
  open (FILE, "/secure/$url") || die("Fehler open $url: $!");
  # binmode(FILE); (nur bei Bildern und sonnstigem);
  # binmode(STDOUT); (same)
  while (<FILE>) {
    print;
  }
   close(FILE);
} else {
  print "Datei existiert nicht
";
}


Natürlich musst du noch abfragen ob es html dateein oder bilder oder wasauchimmer sind, die du zurückgeben willst...
aber im groben sollte des klappen (*hoff*)\n\n

<!--EDIT|Thorium|1062164975-->
Per|li|nist der; -en, -en <zu ↑...ist>: a) Anhänger, Vertreter der radikalen Perlinisten die Perl als die einzig wahre Sprache ansehen; b) Mitglied einer perlinistischen Community.
Drain
 2003-09-03 13:24
#2297 #2297
User since
2003-08-21
26 Artikel
BenutzerIn
[default_avatar]
1)
Was bewirkt die Abfrage
Code (perl): (dl )
if (-f "/secure/$url")


2)
Das mit der Variable $url habe ich noch nicht ganz verstanden. Darin soll wohl der Name der zu schützenden Datei gespeichert sein (z.B. geheim.htm oder geheim.pl).
Die Abfrage
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
if (-f "/secure/$url") {
  open (FILE, "/secure/$url") || die("Fehler open $url: $!");
  # binmode(FILE); (nur bei Bildern und sonnstigem);
  # binmode(STDOUT); (same)
  while (<FILE>) {
    print;
  }
   close(FILE);
} else {
  print "Datei existiert nicht
";
}

hat also eigentlich gar nichts mit dem Login zu tun, sondern ist eine reine Vorsichtsmaßnahme. Wenn ich also sicher weiß, daß diese Datei existiert, brauch ich die Abfrage doch gar nicht.

3) In der while-Schleife steht "print;". Was soll das? Was soll er schreiben?

Grüße Drain\n\n

<!--EDIT|Drain|1062581127-->
eisbeer
 2003-09-03 14:09
#2298 #2298
User since
2003-08-29
347 Artikel
BenutzerIn
[Homepage] [default_avatar]
1) Die schaut, ob die Datei eine "normale" datei ist, also (unter unix) kein Verzeichnis o.ä.
da könntest du auch -e benutzen, das schaut nur, ob die Datei existiert.

2) So wie ich das seh, soll dieses Snipplet nach der Authentifiezierung eines Benutzers ausgeführt
werden. in $url ist die HTML (!, nicht perl) datei gespeichert, die aufgerufen werden soll, wenn
der Login erfolgreich war.

3) Das print gibt zeilenweise die geöffnete datei $url aus. das ist die Kurzschreibweise für print $_;
In $_ ist immer die aktuelle Zeile gespeichert, die die whileschleife gerade durchläuft.
Die meisten PC Probleme befinden sich zwischen Bildschirm und Stuhl...
<< >> 8 Einträge, 1 Seite



View all threads created 2003-08-29 16:21.