PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zurück in den Loginbereich verhindern


wuerzie
22.08.2003, 11:45:28
Hallo zusammen
Ich will verhindern, dass jemand mit dem Zurück-Button
auf Seiten gelangt die normal mit einem Passwort geschützt
sind.


Mein Einfall war jetzt:

1.Ich starte eine Session
2.Ich erzeuge eine Zufallszahl und speichere Sie mit session_register in der Session ab.
3.Ich sende die gleiche Zufallszahl mit einem versteckten Formular zur nächsten Seite.
4.Ich überprüfe die Zufallszahl der Session mit der des Formulars.
5.Stimmen beide überein, darf ich auf der Seite bleiben. Wenn nicht, werde ich automatisch zur Login Seite weitergeleitet.
6.Wenn ich auf der Seite bleiben durfte, wird die Zufallszahl der Session gelöscht und durch eine Neue ersetzt.
7.Die neue Zufallszahl wird zur weiteren Übergabe auf die nächste Seite wieder in ein verstecktes Formular eingefügt.

Und So Weiter.

Ich dachte, wenn ich nun dem Zurück-Button klicke, stimmen die beiden Werte nicht mehr überein.
Die Session Zufallszahl hat sich geändert. Die Formular Zufallszahl hat aber noch den alten Wert im Cache.
Doch leider funtioniert das Ganze nur dadurch, dass mein Browser mich beim Zurück klicken darauf
aufmerksam macht, das die Seite Variablen enthält die von einem Formular stammen und es besser
wäre, erst mal zu aktualiesieren .
Das klappt aber leider nur bei mir auf dem Server.
Ich habe es zum Testen bei meinem Provider abgelegt. (Er hat PHP 4.3.2, Ich auch)
Bei Ihm kommt aber keine Meldung, dass die Seite besser aktualiesiert wird.
Ich gelange ohne Probleme auf meine vorherige Seite.
Wir haben beide no-cache eingetragen.
Ich dachte immer, dass die Seite dann automatisch beim aufrufen aktualiesiert wird.
Egal woher ich komme.
Wo ist mein Gedankenfehler.


###### Login Seite '##############################
<?php
@session_start();
srand((double)microtime()*1000000);
$id= rand();
session_register("id");
?>
<html>
<form name="frmlog" action="Seite1.php" method="post" target="" >
<?php
echo"<input type='hidden' name='idfrm' value='".session_encode()."' size='' maxlength=''>";
?>
Benutzernummer:<input type="Text" name="usernr" value="" size="" maxlength="5"><br>
Passwort:<input type="Password" name="pw" value="" size="" maxlength="5" ><br>
<input type="Submit" name="send" value="Anmelden">
</form>
</html>
###################################################

###### Seite1.php #################################

<?php
@session_start();
iif(session_encode()==$_POST['idfrm'])
{
session_unregister("id");
srand((double)microtime()*1000000);
$id= rand();
session_register("id");
}
else
{
echo"<SCRIPT language='Javascript'>window.location.href='loginphp';</SCRIPT>";
// hier ist noch eine Sicherheitslücke. Wenn ich js deaktiviert ist sehen die Seite trotzdem.
}
?>
<html>
Und nun der Seiteninhalt
</html>
################################################

Taube
22.08.2003, 12:26:56
gehe nur eben aufs Javascript ein:
entweder machst Du im PHP selber header ("location:login.php"); oder Du echost ein meta refresh url

mfg - Taube

Bigdaddy
22.08.2003, 16:51:24
lösch beim verlassen des geschützten bereichs einfach die session mit session_destroy();

MfG
Bigdaddy

sourcecode
22.08.2003, 17:32:52
Beim überfliegen deines Textes verging mir die Lust, ihn zu lesen. Zwei Tipps dazu:
1) Quelltext farbig hervorheben, am Besten den PHP-button benutzen.
2) Längere Quelltexte gehören auf deinen Webspace und hier nur verlinkt.

"<SCRIPT language='Javascript'>window.location.href='loginphp';</SCRIPT>";

Gewöhn dir lieber an, Javascript auszukommentieren (in einem HTML-Kommentar zu schreiben). Die Browser, die Javascript kennen, führen es aus, die anderen ignorieren es und zeigen auch nicht den Quellcode vom Javascript an.

Wieso soll denn der Nutzer nicht den Zurück-Buton betätigen dürfen ?

wuerzie
24.08.2003, 11:50:38
Vielen Dank für die Antworten

Hi Taube
Ich habe mich für echo meta refresh url entschieden.
Klappt super.

Hi Bigdaddy
Wie kann ich den feststellen, das jemand den geschützten Bereich verläßt ???

Hi Scourecode
Wenn der Nutzer ohne sich auszuloggen auf eine andere Seite wechselt,
soll er beim betätigen des Zurück-Buttons auf die Loginseite weitergeleitet werden.

Gruss Wuerzie

Bigdaddy
27.08.2003, 11:57:33
naja du weisst ja welche seiten zum login-bereich gehören und welche nicht... falls allerdings eine ganz andere seite gelanden würde, könntest du im body schreiben:
onunload="<? session_destroy(); ?>"

ich weiss ja nicht wie deine seite aufgebaut ist...


MfG
Bigdaddy

Taube
27.08.2003, 15:52:22
Hmm, ist Javascript, kann das denn so einfach mal einen PHP-Code an den Server schicken damit er den ausführt? Wäre mal eine interessante Idee! :)