Verweise mit CGI

dark_ghost

Erfahrenes Mitglied
Hallo zusammen,

ich habe folgendes Problem.

Ich habe ein Perlscript geschrieben, das Übergabeparameter von einem HTML Formular erhält (Benutzername und Passwort).
Dieses Script prüft ob die Eingaben korrekt sind oder eben nicht. Stimmen Benutzername und Passwort soll der User auf eine nächste HTML Seite weitergeleitet werden.
Wie kann ich das umsetzen

Im Moment habe ich folgenden Code um einfach nur Auszugeben, dass das Login erfolgreich war:
Code:
#Ausgabe
	print $cgi->header(),
	$cgi->start_html('Auswertung'),
		$cgi->h1('\-Login-/');	   
		print $cgi->b('Anmeldung erfolgt');
		print $cgi->end_html();
Hier möchte ich jetzt an Stelle des Ausgabetextes eine weiterleitung auf eine andere HTML Seite vornehmen.

Ich hoffe ihr könnt mir helfen, vielen Dank
Gruß Andreas
 
Hallo Leute,

also ich habe das Problem selbst gelöst und möchte euch dies an dieser Stelle nicht vorenthalten.

Zum einen gibt besteht die Möglichkeit das ganze mittels der htaccess Datei zu lösen. Es muss das Module mod_rewrite eingebunden werden mit dessen Hilfe es dann möglich ist auf eine URL um zu leiten, quasi die URL zu manipulieren, da dies aber recht viel aufwand ist, da auch noch mehrer notationen im script vorgenommen werden müssen habe ich mich für eine Alternative entschieden.

-> Ich habe in meiner Auswertung eine Meta-Angabe notiert, die automatisch auf die entsprechende Seite umleitet. D.H. ist das Login korrekt wird auf das nächste Formular weitergeleitet. Hier der Code:

Code:
#Ausgabe
	print $cgi->header(),
	$cgi->start_html('Auswertung'),
		#$cgi->h1('\-Login-/');
		print $cgi->b('Anmeldung erfolgreich, Sie werden in kürze weitergeleitet!');
		print '<head><meta http-equiv="refresh" content="5;  URL=http://lnxmt01:12345/test.html"></head>\n';
		print $cgi->end_html();

Mit dieser Notation erzwinge ich eine Weiterleitung auf die Seite test.html nach 5 Sekunden.

Gruß
Andreas
 
Dir ist die extreme unsicherheit dieser Lösung aber bekannt, oder?

Denn jeder der direkt die Ziel URL anspringt, wird ja nicht nach einem Passwort gefragt, sondern an den wird direkt das Dokument ausgeliefert, was ja nicht unbedingt wünschenwert ist.

Abhilfe bringen in diesem Fall 2 dinge:

1. Du müsstest die Informationen die nur per Passwort und Benutzername erreichbar sein sollen, komplett in deinem Perl-Script kapseln. d.H. anstatt umzuleiten bei erfolgreicher Authentifizierung eben die entsprechenden Informationen ausspucken. Was natürlich bei mehreren Seiten (ich denke da jetzt mal rein fiktiv an einen Mitgliederbereich für Erwachsene mit zahlreichen Gallerien, forum, etc.) recht aufwendig wird. Da käme dann Lösung nummer 2 in Frage.

Nämlich die Verwendung eines mittels .htaccess geschützten Verzeichnisses. Ruft jemand Inhalte innerhalb des Verzeichnisses oder das Verzeichnis selbst ab, so wird er dazu aufgeforder Benutzernname und Passwort einzugeben. Stimmen diese Daten darf er darauf zugreifen. Entscheidender Vorteil ist jetzt eben, dass dein Login jetzt während der gesamten Zeit die dein Browser geöffnet ist bestehen bleibt. Du also beliebig viele verschiedenen Dateien anzeigen kannst, aber dich nur einmal anmelden musst.

Sofern du deinen Umeltung beibehalten möchtest, gibt es noch eine elegantere Lösung als die von dir mittels Meta-Refresh gewählte (zudem das Browserabhängig funktionieren kann oder eben nicht).

Code:
use CGI;
my $q = new CGI;

if($q->param('password') eq 'DeinPasswort' && $q->param('username') eq 'DeinUsername') {
   print $q->redirect('http://www.deineDomain.de/dein/geheimer/platz.html');
}
else {
   print $q->header;
   print "Sorry, keine Berechtigung!";
}

Achso, theoretisch könntest du beim abrufen von deiner "geheimen" Datei den Referer prüfen. Wenn dieser nicht die URL des Scripts ist, das den Benutzernamen und das Passwort prüft, kannst du davon ausgehen, dass der Benutzer die URL direkt eingegeben hat und könntest die ausgabe verweigern. Was aber zu Problemen führen kann, da auch hier nicht alle Browser die referer entsprechend mitschicken (zudem fraglich ist, ob entsprechende Referer Felder überhaupt bei automatischen Weiterleitungen gefüllt werden).

Hoffe etwas geholfen zu haben,
Sven :)
 
Hallo,

vielen Dank für deine Tipps!

Das ganze läuft nur intern bei mir in der Firma hier und wird lediglich von ein paar wenigen Anwendern genutzt, denen dadurch die Arbeit etwas erleichtert werden soll. Bei denen bin ich mir sicher, dass keiner auf die Idee kommt das Login zu umgehen ;) .

Dennoch hast du auf jedenfall recht damit, ich werds mir fürs nächste mal merken. Danke!



Gruß Andi
 

Neue Beiträge

Zurück