[GastForen Archiv Perl und CGI Einloggen auf (s)HTML-Seite

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Archiv - Archivierte Foren
Themen
Beiträge
Moderatoren
Letzter Beitrag

Einloggen auf (s)HTML-Seite

Hanü
Beiträge gesamt: 219

14. Nov 2002, 00:28
Beitrag # 1 von 40
Bewertung:
(13812 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Man kann Verzeichnisse ja relativ sicher mit der .htaccess
schützen. Um sich einzuloggen, verlinkt man einfach auf eine
Seite im geschützten Verzeichnis, und dann fragt der Browser
in einem eigenen Fenster nach Benutzernamme und Passwort.

Ich möchte diese Login-Felder mittels CGI/Perl gerne in eine
(s)HTML-Seite integrieren. Ich weiß, dass man das mit Java
machen kann, allerdings werden so die Zugangsdaten im Verlauf
gespeichert, und das ist ja nicht gerade das Gelbe vom Ei.

Deshalb die Frage: Wie kann ich ein Formular auf einer HTML-
Seite mit einem Perlscript verbinden, dass man sich direkt
durch Eingabe auf der Zugangsdaten auf der Website einloggen
kann?

(Dieser Beitrag wurde von Hanü am 9. Feb 2004, 00:00 geändert)
X

Einloggen auf (s)HTML-Seite

SabineP
Beiträge gesamt: 7586

14. Nov 2002, 14:49
Beitrag # 2 von 40
Beitrag ID: #16497
Bewertung:
(13812 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hanü, ich glaube nicht, daß das so einfach funktioniert.

http://www.hilfdirselbst.ch/...18&topic_id=1217

Du kannst ja mal das Testscript (index.cgi) in Dein geschütztes Verzeichnis legen.

#!/usr/bin/perl
print "Content-Type: text/html\n\n";
for (keys %ENV){
print "$_ : $ENV{$_} <br>";
}

Falls Du nach dem Login in den Umgebungsvariablen irgendwo Dein Passwort findest,
dann brauchst Du nur noch ein HTML-Formular mit zwei Textfeldern,
eins für den REMOTE_USER und eins mit der Variable für das Passwort.

Dein Username wird bestimmt als REMOTE_USER angezeigt.
Das Passwort stellt der Apache in der Standardkonfiguration nicht zur Verfügung.


Wahrscheinlich kannst Du auch mit so einer URL das geschützte Verzeichnis aufrufen:

username:passwort@deinedomain.de/geschuetztes_verzeichnis/

Die URL läßt sich mit einem HTML-Formular und Perl (oder Javascript) erzeugen.
Da gibts jedoch einige Nachteile:
Es funktioniert nicht in allen Browsern.
Das Passwort steht in der Adresszeile.
Das Passwort steht unverschlüsselt in der access.log des Webservers.

Das sieht also nicht besonders vertrauenserweckend aus.

Falls Du Deinen Apache selbst konfigurieren kannst, gibt es natürlich noch mehr Möglichkeiten.

Natürlich kann man auf den Zugangsschutz per .htaccess verzichten.
Alle Userdaten werden in einer Textdatei oder Datenbank verwaltet.
Beim Login per HTML-Formular werden die eingetippten Userdaten verglichen.


Grüße von Sabine


als Antwort auf: [#16436]
(Dieser Beitrag wurde von SabineP am 14. Nov 2002, 14:55 geändert)

Einloggen auf (s)HTML-Seite

Hanü
Beiträge gesamt: 219

15. Nov 2002, 05:39
Beitrag # 3 von 40
Beitrag ID: #16530
Bewertung:
(13812 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich hab das Script mal ausprobiert, leider gibt es keine Variable mit dem Passwort. Ich setz mich mal mit meinem Provider in Verbindung, ob man a was machen kann. Melde mich hier dann nochmal! THX

Gruß Andreas

P.S. (Nachtrag) Zu deinem letzten Vorschlag:
"Natürlich kann man auf den Zugangsschutz per .htaccess verzichten.
Alle Userdaten werden in einer Textdatei oder Datenbank verwaltet.
Beim Login per HTML-Formular werden die eingetippten Userdaten verglichen."

Ist das überhaupt sicher? die Textdatei könnte dann doch jeder X-Beliebige aufrufen und hätte so alle Zugangsdaten, oder nicht?! Ich denke doch, mit der .htaccess, das ist die sicherste Variante...

Aber da fällt mir gerade auch noch etwas anderes ein: Angenommen, ich will es so einrichten, dass man in dem geschützten Bereich seine Zugangsdaten selbst verändern kann, also z.B. das Passwort ändern. Geht das überhaupt noch mit einer .htaccess, oder muss ich dann auf eine andere Möglichkeit zurückgreifen?

Mir schwebt da nämlich sowas für meine neue ABI-Website vor. Es soll einen Loginbereich nur für Members geben, in dem z.B. Adressen o.ä. gespeichert sind. Und innerhalb dieses geschützten Bereiches sollen die User selbst Ihre Daten verwalten können, damit z.B. die Adressen aktuell gehalten werden. Damit ist jeder selbst für seine Daten verantwortlich. Geht das überhaupt noch mit Perl/CGI oder sollte ich dazu lieber PHP einsetzen?

Die Krönung wäre dann noch ein kleines aber feines Forum innerhalb des Login-Bereiches :). Aber im Prinzip wäre das das einzige, wo ich mit PHP arbeiten wollte... (habe viel vor, für das, dass ich mich mit allem noch nicht so gut auskenne :)


als Antwort auf: [#16436]
(Dieser Beitrag wurde von Hanü am 15. Nov 2002, 06:18 geändert)

Einloggen auf (s)HTML-Seite

SabineP
Beiträge gesamt: 7586

15. Nov 2002, 10:00
Beitrag # 4 von 40
Beitrag ID: #16543
Bewertung:
(13812 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Andreas, die Userdaten in einer Textdatei zu verwalten ist natürlich auch sicher.
Es kommt nur auf die richtigen Rechte an (chmod), damit niemand die Passwort-Textdatei im Browser lesen kann.
Die .htaccess und .htpasswd kann man genauso im Browser lesen, wenn sie die falschen Rechte besitzen.
Die Passwörter in der .htpasswd sind zusätzlich verschlüsselt. Das Entschlüsseln übernimmt der Apache selbst.
Deswegen finde ich ja die Lösung mit der htaccess so einfach. Das Loginfenster würde mich überhaupt nicht stören.

Die Zugangsdaten in der .htpasswd kann man mit Perl bearbeiten und auch verschlüsseln.
Verschiedene Verschlüsselungsmethoden sind dabei möglich.
Man muß halt nur die Methode wählen, die der Apache zum Entschlüsseln verwenden kann.

Auch Passwort-Textdateien lassen sich verschlüsseln, allerdings muß man dann das Entschlüsseln selbst programmieren.

Was Du vorhast geht selbstverständlich mit Perl. Es gibt keine Funktionen von PHP, die es in Perl nicht auch geben würde.

Du wirst doch sicher nicht alles neu programmieren wollen (Mitgliederverwaltung, Forum, Passwortschutz).
Es gibt da schon fertige "Community- bzw. Portal- Programme", in Perl oder PHP programmiert.

Ob da nun der Passwortschutz mit .htaccess oder einer Passwort-Textdatei realisiert ist,
dürfte ja eigentlich erstmal für Deinen Fall egal sein.

Grüße von Sabine


als Antwort auf: [#16436]

Einloggen auf (s)HTML-Seite

Hanü
Beiträge gesamt: 219

16. Nov 2002, 13:10
Beitrag # 5 von 40
Beitrag ID: #16719
Bewertung:
(13812 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich hab mir das gerade nochmal durch den Kopf gehen lassen...

Wäre es in meinem Falle sogar noch geschickter, wenn die ganzen Zugangsdaten mitsamt den persönlichen Angaben in der MySQL-Datenbank gespeichert werden würden?

Ich denke so werde ich es machen. Hab nur noch nicht den geringsten Schimmer, wie ich das realisiere. Ich seh schon, da muss ich noch gaaanz viel lernen ;)

Angenommen, ich krieg das mit der MySQL und Perl irgendwie hin, wie kann ich dann noch sicherstellen, dass die Verzeichnisse wirklich nur den entsprechenden Personen zugänglich sind? Kann man die MySQL wie eine .htaccess oder so einsetzen? Oder müsste man dann ein Perlscript schreiben, dass die Daten aus der MySQL ausließt und in die entsprechende Textdatei schreibt bzw. die Datei aktuallisiert? Oder kann man auf den Inhalt der MySQL sowiso nicht von außerhalb zugreifen? (bin da grad unsicher)

Maaan, wird das kompliziert!!!!!!!!!!!!
Gruß Andreas


als Antwort auf: [#16436]
(Dieser Beitrag wurde von Hanü am 27. Apr 2004, 04:47 geändert)

Einloggen auf (s)HTML-Seite

SabineP
Beiträge gesamt: 7586

16. Nov 2002, 17:09
Beitrag # 6 von 40
Beitrag ID: #16736
Bewertung:
(13812 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hanü, was möchtest Du eigentlich genau schützen?
Den gesamten Inhalt eines Verzeichnisses, nur bestimmte Dateien innerhalb eines Verzeichnisses
oder bestimmte Funktionen eines Perl-Programms in einem Verzeichnis.
Das ist mir noch etwas unklar.


als Antwort auf: [#16436]

Einloggen auf (s)HTML-Seite

Hanü
Beiträge gesamt: 219

16. Nov 2002, 17:56
Beitrag # 7 von 40
Beitrag ID: #16737
Bewertung:
(13812 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Von allem etwas...

Nein, eigentlich will ich einen Bereich, also alles was in einem Ordner ist, mit einem Passwortschutz versehen. In diesem Ordner gibt es jede Menge persönlicher Fotos und Berichte, und außerdem soll es irgendwann mal ein Forum drin geben. Aber noch vor dem Forum soll es möglich sein, dass IN diesem geschützten Bereich die User selbst Ihre persönlichen Daten eingeben und ändern können. Inklusive des Passwortes.

Also zum einen ein typischer Passwortschutz für einen Ordner mit all seinen Unterordnern und Dateien. Und zum anderen sollte ein Teil der MySQL-Datenbank so sicher sein, dass nur die Leute, für die die Infos bestimmt sind, sie lesen und ändern können...

War das verständlicher?

Ein 0815-Programm zum erstellen und verwalten einer Community will ich nicht verwenden, da lernt man ja nix dabei. Außerdem hab ich schon so meine Vorstellungen, wie ich alles in die Seite einbinden will (Grundgerüst steht schon).

Allerdings wäre ich gerne dazu bereit, wenn es zum besseren verständnis beiträgt, erst mal eine Testcommunity anzulegen, um die Materie besser zu begreifen. Hast du da einen Vorschlag? Ich hab mich schon umgeschaut (google/metager), aber die meisten Programme, die ich gefunden habe, waren entweder kostspielig oder eben - fertige Programme mit bedienoberfläche. Sowas will ich nicht. o findet man denn da was vernünftiges, durchsichtiges, zum einsteigen, und nur, um mit der Materie vertrauter zu werden? (man, hört sich das geschwollen an!!!)

Gruß Andreas


als Antwort auf: [#16436]

Einloggen auf (s)HTML-Seite

SabineP
Beiträge gesamt: 7586

16. Nov 2002, 22:50
Beitrag # 8 von 40
Beitrag ID: #16751
Bewertung:
(13812 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Andreas, ich hab mal ein kostenloses Script gesucht, das so ungefähr Deinen Vorstellungen entspricht.

http://www.locked-area.com/html/lite/features.html

Sämtliche Funktionen für die Mitglieder und den Administrator sind auf der Webseite aufgelistet.

Du kannst damit 15000 Mitglieder verwalten.
Bei 15000 Mitgliedern denke ich aber, daß der Login-Vorgang etwas länger dauert.

Deine geschützten Dateien legst Du in ein oder mehrere Verzeichnisse Deines Webservers.

Die HTML-Ausgabe (wie das dann im Browser aussieht) läßt sich beliebig anpassen, im Quellcode natürlich.

Ich habe mir das noch nicht installiert, aber glaube fast, daß da keine deutsche Sprachdatei dabei ist.
Also muß das Ganze noch übersetzt werden.

MySQL brauchst Du dafür nicht.
Oder hast Du bereits Datenstrukturen in Deiner MySQL-Datenbank angelegt, die zusätzlich verwaltet werden müssen?

Wenn dann später mal das Forum dazu kommt,
müßte beim Posten der Username automatisch aus der .htpasswd - Datei übernommen werden.

Das stelle ich mir aber nicht so schwierig vor, da der eingeloggte User (Username)
bereits in der Umgebungsvariable $REMOTE_USER drin steht.


Grüße von Sabine


als Antwort auf: [#16436]
(Dieser Beitrag wurde von SabineP am 17. Nov 2002, 01:05 geändert)

Einloggen auf (s)HTML-Seite

Hanü
Beiträge gesamt: 219

17. Nov 2002, 01:49
Beitrag # 9 von 40
Beitrag ID: #16761
Bewertung:
(13812 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
ich habe mich da mal angemeldet, aber noch keine Zeit gehabt, die Dateien anzuschauen. Was mir nicht gefällt war die eine Anmerkung bei deren Downloadbedingungen:

"If you remove this, we will have your site shut down! We've done it before and will do it again!"

Ich versteh ja, dass die was dagegen haben, wenn man ihr script ändert, es ist aber nicht sehr toll, was sie einem androhen! (nicht das ich jetzt glaube, dass die wirklich so hinterher sind...)

Naja, ich schau mir das bei Gelegenheit mal in Ruhe an und installier das mal Probeweise (aber nicht gleich im öffentlichen ABI-Bereich).

Im Übrigen habe ich jetzt mal eine Pre-Version von einem Teil der zukünftigen ABI-Site ins Netz gestellt - was sagst du dazu (siehe bitte im Testforum neuer Sites)?

Wenn ich mal soweit bin, soll auf jeder Seite ein kleiner Bereich mit den Einlogg-Feldern (Name, Passwort) sein, dass man sich von jeder Seite einloggen kann. Der Passwortgeschützte Bereich hat dann ein ganz anderes Menü oben (andere Haupt- und Unterpunkte)...

Gruß Andreas


als Antwort auf: [#16436]
(Dieser Beitrag wurde von Hanü am 27. Apr 2004, 04:48 geändert)

Einloggen auf (s)HTML-Seite

SabineP
Beiträge gesamt: 7586

17. Nov 2002, 11:56
Beitrag # 10 von 40
Beitrag ID: #16767
Bewertung:
(13812 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Andreas,

"If you remove this, we will have your site shut down! We've done it before and will do it again!"
Diese Spruch konnte ich nirgendwo auf der Seite finden. Wo steht das?

In den Lizenzbedingungen steht:
Locked Area Lite may be used and modified by anyone so long as they have a fully registered copy and this copyright notice and the comments above remain intact.
Also kann das Script beliebig geändert werden, solange der Copyright - Hinweis nicht entfernt wird.

Das Script funktioniert sogar mit eigenem Loginformular ohne Popup-Fenster obwohl das Verzeichnis mit .htaccess geschützt ist.
<META HTTP-EQUIV=Refresh CONTENT='0;URL=[url]http://username:passwort@domain.de/geschuetztes_verzeichnis'&gt;[/url]

Nach dem Refresh steht dann in der Adresszeile des Browsers:
http://domain.de/...huetztes_verzeichnis

In der History, in den Lesezeichen und in der Logdatei des Webservers wird die URL
username:passwort@domain.de/geschuetztes_verzeichnis
nicht gespeichert. :-)

Ich hatte schon einmal so etwas ähnliches probiert ohne Refresh, aber es hat nie richtig funktioniert.

Also kann man dieses Loginformular in allen Deinen Seiten einbauen.

Deine Seiten sehen recht gut aus.
Im Netscape 4 wird allerdings die obere Navigationsleiste von der unteren Navigationsleiste verdeckt.

Grüße von Sabine


als Antwort auf: [#16436]
(Dieser Beitrag wurde von SabineP am 17. Nov 2002, 12:30 geändert)

Einloggen auf (s)HTML-Seite

SabineP
Beiträge gesamt: 7586

18. Nov 2002, 00:21
Beitrag # 11 von 40
Beitrag ID: #16810
Bewertung:
(13812 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Habe nun inzwischen mal ein Beispiel eingerichtet.
Die Felder Username und Passwort befinden sich jetzt in der HTML-Seite.

Hier die Demo zum Login:
http://cgi.gmxhome.de/admin/login.cgi

Username: tester
Passwort: tester

Das Verzeichnis
http://cgi.gmxhome.de/members/
ist mit .htaccess geschützt.

Es kommt jetzt kein Popupfenster für den Login.

Ob die URL
http://cgi.gmxhome.de/members/
in allen Browsern erhalten bleibt weiß ich nicht.

Mit Netscape 4, IE 4, Phoenix (Mozilla) klappt es jedenfalls.


als Antwort auf: [#16436]

Einloggen auf (s)HTML-Seite

Hanü
Beiträge gesamt: 219

29. Nov 2002, 02:33
Beitrag # 12 von 40
Beitrag ID: #17977
Bewertung:
(13812 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Entschuldige bitte, dass ich so lange nicht geantwortet habe, kam aber nicht dazu, mich weiter damit zu beschäftigen. Ich hoffe, dieses Wochenende habe ich mal wieder Zeit dafür!

Ich hab mir dein obiges Beispiel mal angeschaut, ebenso die setup.cgi von dem kostenlosen Tool - konnte aber auf die Schnelle keinen Zusammenhang entdecken. Du hast dein Script oben doch selber geschrieben, oder?! Oder hast du das fertige Script nur etwas abgewandelt?

Jedenfalls denke ich, dass ich dein Beispiel und dein Script im Prinzip verstanden habe. Ich werde da mal rumprobieren, was ich daraus machen kann. Im Prinzip ist das Problem damit dann ja gelöst. Ich muss also nur auf jeder Seite, die die Einlogg-Felder enthalten soll, das CGI einbauen bzw. aufrufen <--! usw und dann müsste es immer richtig funktionieren...

Wie gesagt, ich probier das mal bei Gelegenheit aus. Bis dann und Danke! Gruß Andreas


als Antwort auf: [#16436]
(Dieser Beitrag wurde von Hanü am 27. Apr 2004, 04:52 geändert)

Einloggen auf (s)HTML-Seite

SabineP
Beiträge gesamt: 7586

29. Nov 2002, 20:56
Beitrag # 13 von 40
Beitrag ID: #18077
Bewertung:
(13812 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Andreas, die login.cgi habe ich selbst geschrieben. Die kannst Du verwenden.
Du brauchst nur noch ein Formular in Deine HTML-Seiten einbinden mit
<form action="login.cgi" method="POST">

Beispiel:

<form action="login.cgi" method="POST">Username: <input type="text" name="username" size="20">
<br>Passwort: <input type="password" name="password" size="20">
<br><input type="submit" value="Login"></form>

Eine Mitgliederverwaltung ist da allerdings nicht dabei.
Die Usernamen und Passwörter mußt Du dann selbst in die .htpasswd eintragen.

Grüße von Sabine


als Antwort auf: [#16436]

Einloggen auf (s)HTML-Seite

Hanü
Beiträge gesamt: 219

30. Nov 2002, 06:16
Beitrag # 14 von 40
Beitrag ID: #18089
Bewertung:
(13812 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Also sieht die login.cgi so aus:

#!/usr/bin/perl
use CGI qw(:standard);
$schutzurl = "sub.domain.de/members"; # URL des passwortgeschützten Verzeichnis
$query = new CGI;
$username = $query->param('username');
$password = $query->param('password');
&login if ($username && $password && $ENV{'REQUEST_METHOD'} eq "POST");
sub login{
print "Content-type: text/html\n\n";
print "<HTML><META HTTP-EQUIV=Refresh CONTENT='0;URL=http://$username:$password\@$schutzurl'></HTML>\n";
exit;
}


Das ist echt genial. So hab ich mir das für's erst mal vorgestellt. Danke nochmal.

Könnte ich die Datei auch mit der Endung pl versehen statt cgi?

Das mit der Mitgliederverwaltung .htpasswd ist nicht so wichtig. Die htaccess mit den verschiedenen Usern kann ich bei meinem Provider bequem online einrichten. Mit ging es dabei nur darum, dass die angemeldeten Leute sich ihr Passwort selbstständig ändern können, aber das hat noch Zeit.

Mit diesem kleinen Script ist mir fürs erst voll geholfen... DANKE!
Gruß Andreas


als Antwort auf: [#16436]
(Dieser Beitrag wurde von Hanü am 27. Apr 2004, 04:59 geändert)

Einloggen auf (s)HTML-Seite

Ollli
Beiträge gesamt: 458

30. Nov 2002, 22:58
Beitrag # 15 von 40
Beitrag ID: #18132
Bewertung:
(13812 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Darf ich mal so ganz kurz fragen, wieso bei einem Refresh der username und das passwort in der Adresszeile nicht gespeichert wird?
Und wird das nicht angezeigt?
Und noch ne Frage: Man kann doch in die eine HTML-Datei reinschauen, irgendwie wird die doch aber im Cache gespeichert, oder?
Ich meine diese Variante ist eher schlecht mitzubekommen, doch es geht doch, oder?

Ollli


als Antwort auf: [#16436]
X