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>
################################################
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>
################################################