[perl,cgi,html]'url verstecken'?

Guten Tag dem Forum!

Mein Problem:
Ich möchte eine Web-Applikation nur ausgewiesenen Nutzern zugänglich machen. Dazu hab ich eine Startseite entwickelt, die von dem User eine UserID und ein Password erhält. Diese Kombination wird (über Umwege am NTServer) geprüft. Bei Rückgabe eines „okay“ soll die Applikation (*.html) gestartet werden. Findige User könnten sich ja nun einfach diese URL merken und beim nächsten mal den login umgehen.
Was kann man da tun?
Danke den Diskutanten!

CmEt.

Hallo „cm641et“,

Ich möchte eine Web-Applikation nur ausgewiesenen Nutzern
zugänglich machen. Dazu hab ich eine Startseite entwickelt,
die von dem User eine UserID und ein Password erhält. Diese
Kombination wird (über Umwege am NTServer) geprüft. Bei
Rückgabe eines „okay“ soll die Applikation (*.html) gestartet
werden. Findige User könnten sich ja nun einfach diese URL
merken und beim nächsten mal den login umgehen.
Was kann man da tun?

Prinzipiell sehe ich 2 Moeglichkeiten einen Passwortschutz
fuer Webseiten zu realisieren:

a) dein (CGI-)Skript prueft besagte UserID und Passwort
und liest bei Erfolg eine Datei mit HTML-Code, die
nicht im oeffentlich zugaenglichen HTML-Verzeichnis
des Webservers liegt ein und gibt diese an den Anwender
zurueck. Da die Seite nur durch Ausfuehren des Skripts
angezeigt werden kann, dass auf die richtigen Loginparameter
lauert, hat ein einfaches Merken der (Skript-)URL keinen Effekt.

b) du verwendest direkt den Loginmechanismus deines Webservers
und packst die Dateien in ein HTML-Verzeichnis, dass Du als
passwortgeschuetzt definierst. Dazu musst Du z.B. beim
Apache-Webserver sogenannte htaccess -Dateien anlegen.
Mehr Infos zu dem Thema im Forum von Selfhtml:
http://www.teamone.de/selfhtml/selfhtml.htm

Gruss,
-Andreas.

du kannst das check-script einfach einen cookie setzen lassen.
wenn dieser zu alt oder gar nicht da ist wird die seite nicht angezeigt.

du kannst das check-script einfach einen cookie setzen lassen.
wenn dieser zu alt oder gar nicht da ist wird die seite nicht
angezeigt.

Ja, daran habe ich auch gedacht - ich hoffe, dass unsere Firmen-Policy den Einsatz für gut befindet…

Vielen Dank!

CmEt

Hallo „cm641et“,

Ich möchte eine Web-Applikation nur ausgewiesenen Nutzern
zugänglich machen. Dazu hab ich eine Startseite entwickelt,
die von dem User eine UserID und ein Password erhält. Diese
Kombination wird (über Umwege am NTServer) geprüft. Bei
Rückgabe eines „okay“ soll die Applikation (*.html) gestartet
werden. Findige User könnten sich ja nun einfach diese URL
merken und beim nächsten mal den login umgehen.
Was kann man da tun?

Prinzipiell sehe ich 2 Moeglichkeiten einen Passwortschutz
fuer Webseiten zu realisieren:

a) dein (CGI-)Skript prueft besagte UserID und Passwort
und liest bei Erfolg eine Datei mit HTML-Code, die
nicht im oeffentlich zugaenglichen HTML-Verzeichnis
des Webservers liegt ein und gibt diese an den Anwender
zurueck. Da die Seite nur durch Ausfuehren des Skripts
angezeigt werden kann, dass auf die richtigen
Loginparameter
lauert, hat ein einfaches Merken der (Skript-)URL keinen
Effekt.

b) du verwendest direkt den Loginmechanismus deines Webservers
und packst die Dateien in ein HTML-Verzeichnis, dass Du als
passwortgeschuetzt definierst. Dazu musst Du z.B. beim
Apache-Webserver sogenannte htaccess -Dateien
anlegen.
Mehr Infos zu dem Thema im Forum von Selfhtml:
http://www.teamone.de/selfhtml/selfhtml.htm

Hallo!

Vielen Dank für diese Antowrt!
Eine weitere Frage zu a):
Mit „liest“ meinst Du ein *htm-File, welches in dem geschützten Bereich lagert und dann in ein *.htm-File geschrieben wird, dass für die Appl.User lesbar ist?

b) ist auch interessant, erfordert ja aber einen weiteren Pflegeaufwand, denn eine htaccess-Datei muss ja angelegt werden. Meine Idee war es, eben keine User „in der Applikation“ zu verwalten, sondern dies durch ein Check im NT zu erledigen.

Viele Grüsse & nen schönen Tag!

CmEt

Hallo „cm641et“,

Ich möchte eine Web-Applikation nur ausgewiesenen Nutzern
zugänglich machen.

Prinzipiell sehe ich 2 Moeglichkeiten einen Passwortschutz
fuer Webseiten zu realisieren:

a) dein (CGI-)Skript prueft besagte UserID und Passwort
und liest bei Erfolg eine Datei mit HTML-Code, die
nicht im oeffentlich zugaenglichen HTML-Verzeichnis
des Webservers liegt ein und gibt diese an den Anwender
zurueck.

b) du verwendest direkt den Loginmechanismus deines Webservers
und packst die Dateien in ein HTML-Verzeichnis, dass Du als
passwortgeschuetzt definierst.

Eine weitere Frage zu a):
Mit „liest“ meinst Du ein *htm-File, welches in dem
geschützten Bereich lagert und dann in ein *.htm-File
geschrieben wird, dass für die Appl.User lesbar ist?

Also mal ein konkretes Beispiel:
Der User bekommt ein Loginbildschirm, als normales
HTML-File z.B. http://myhost.com/login.htm
mit einem Formular, dass die Logindaten
abfraegt. Bei Klick auf den OK-Button, sendet diese
Seite die Fomulardaten an ein Perl-Skript, dessen URL
im ACTION-Attribut des Form-Tag angegeben ist.

Es ueberprueft die Daten und gibt bei Erfolg die
„geschuetzte“ Seite zurueck:

if ($passwort eq "GEHEIM"){ 
 $dateiname="c:/schablonen/geheim.htm";
 {
 local $/; # lokaler Schlürfmodus
 local \*DATEI; #lokales Dateihandle
 open(DATEI, "; #Datei einlesen
 close(DATEI);
 }
 print "Content-type: text/html\n\n";
 print $text;
}

Die Datei geheim.htm liegt physisch in einem
Verzeichnis das nicht ueber irgendwelche URLs
anzeigbar ist (im Apache-Vokabular: ausserhalb
document root), sonst macht die Aktion ja wenig
Sinn.

Es sei noch angemerkt, dass diese Login-Ueberpruefung
per Skript in jedem Fall den clientseitigen Cookies
vorzuziehen sind, da es mit diesen zu viele
Fehlermoeglichkeiten gibt (Browser unterstuetzt
das nicht oder User hat Cookies deaktiviert).

Hope that helps …

-Andreas.

Hallo Andreas!

Hope that helps …

Ja, vielen Dank - sowas habe ich gesucht.

Viele Grüsse,

CmEt

[perl,cgi,html]‚url verstecken‘?Doch nochmals:
Hallo Andreas,

Eine weitere Frage zu a):
Mit „liest“ meinst Du ein *htm-File, welches in dem
geschützten Bereich lagert und dann in ein *.htm-File
geschrieben wird, dass für die Appl.User lesbar ist?

Also mal ein konkretes Beispiel:
Der User bekommt ein Loginbildschirm, als normales
HTML-File z.B. http://myhost.com/login.htm
mit einem Formular, dass die Logindaten
abfraegt. Bei Klick auf den OK-Button, sendet diese
Seite die Fomulardaten an ein Perl-Skript, dessen URL
im ACTION-Attribut des Form-Tag angegeben ist.

Es ueberprueft die Daten und gibt bei Erfolg die
„geschuetzte“ Seite zurueck:

if ($passwort eq „GEHEIM“){
$dateiname=„c:/schablonen/geheim.htm“;
{
local $/; # lokaler Schlürfmodus
local *DATEI; #lokales Dateihandle
open(DATEI, "; #Datei einlesen
close(DATEI);
}
print „Content-type: text/html\n\n“;
print $text;
}

Die Datei geheim.htm liegt physisch in einem
Verzeichnis das nicht ueber irgendwelche URLs
anzeigbar ist (im Apache-Vokabular: ausserhalb
document root), sonst macht die Aktion ja wenig
Sinn.

ich habe da nocheinmal darüber nachgedacht und frage mich nun, was passiert, wenn mehrere User gleichzeitig zugreifen würden. Würde man anfangen, ganz plump gesagt, Nummern zu vergeben und die Dokumente ebenfalls durchzunummerieren und (überhaupt) nach Gebrauch wieder zu „deleten“.
Oder gibt es andere Möglichkeiten, eine „Session“ abzugrenzen?

CU,

CmEt

Hallo nochmals,

if ($passwort eq „GEHEIM“){
$dateiname=„c:/schablonen/geheim.htm“;
{
local $/; # lokaler Schlürfmodus
local *DATEI; #lokales Dateihandle
open(DATEI, "; #Datei einlesen
close(DATEI);
}
print „Content-type: text/html\n\n“;
print $text;
}

ich habe da nocheinmal darüber nachgedacht und frage mich nun,
was passiert, wenn mehrere User gleichzeitig zugreifen würden.
Würde man anfangen, ganz plump gesagt, Nummern zu vergeben und
die Dokumente ebenfalls durchzunummerieren und (überhaupt)
nach Gebrauch wieder zu „deleten“.
Oder gibt es andere Möglichkeiten, eine „Session“ abzugrenzen?

Nun, der gleichzeitige Zugriff duerfte wohl hier unproblematisch
sein, denn wir oeffnen die Datei nur zum reinen Lesen.
Probleme gibt es erst, wenn waehrend einer „Sitzung“
an einer Datei auch etwas veraendert werden soll, also bei
Schreibzugriff.

Wenn Du also Dateien aendern willst, muesstest Du die
gerade eingelesene Datei vor weiteren Zugriffen sperren.
Das geht ueber Perl’s flock-Funktion:

open(FH, "+

Gruss,
-Andreas.

PS: im ersten Listing von oben hat sich ein kleiner Fehler 
eingeschlichen: das "|| die" sollte durch "or die" ersetzt
werden