Hallo,
ich möchte für eine kleine Anwendung ein LogIn-Skript schreiben. Nachdem ich schon sehr viel über Session-Hijacking, XSS-Skripting, ... gelesen habe, bin ich etwas verunsichert bezüglich der Sicherheit eines Skripts. Es sollen keine wichtigen Sachen geschützt werden, jedoch möchte ich trotzdem niemandem Zugriff gewähren. Mir geht es hier auch eher ums Prinzip.
Als ersten Schutz nehme ich die folgenden Änderungen vor
Ich weiß, dass ich User aussperre, die keine Cookies akzeptieren. Aber Sicherheit geht vor. Ich möchte die Session-ID nicht an die Links anhängen. Das LogIn-Skript sei wie folgt aufgebaut (Das Passwort und der Username sind nur jetzt in der Datei gespeichert):
Das Logout-Skript:
Die Überprüfung ob eingeloggt nehme ich mit
vor.
Die Einschleusung von JavaScript-Code auf meiner Seite schließe ich (als Laie) mal aus. Alle Datenbank-Ausgaben geschehen mit
wobei JavaScript keine Schäden mehr anrichten kann (ini_set(session.cookie_httponly,1)
?!
Meiner Meinung nach hätte ich jetzt alle Sicherheitslücken geschlossen. Dem ist wohl aber nicht so. Bin über jeden Hinweis (auch Literatur) bezüglich der Sicherheit dieses Skripts dankbar.
EDIT: Das ganze wird später über HTTPS laufen. "Menschliches Versagen" (kein Ausloggen im INet-Cafe) wird durch die Lebensdauer des Session-Cookies abgefangen.
Viele Grüße
schiese
ich möchte für eine kleine Anwendung ein LogIn-Skript schreiben. Nachdem ich schon sehr viel über Session-Hijacking, XSS-Skripting, ... gelesen habe, bin ich etwas verunsichert bezüglich der Sicherheit eines Skripts. Es sollen keine wichtigen Sachen geschützt werden, jedoch möchte ich trotzdem niemandem Zugriff gewähren. Mir geht es hier auch eher ums Prinzip.
Als ersten Schutz nehme ich die folgenden Änderungen vor
PHP:
ini_set(session.cookie_httponly,1) // JavaScript hat keinen Zugriff auf das Session-Cookie!
ini_set(session.use_trans_sid,0) // kein PHPSESSID= an die Links angehängt
ini_set(session.use_only_cookies) // Sessionverwaltung wird auf das Session-Cookie beschränkt
PHP:
ini_set(session.cookie_httponly,1);
ini_set(session.use_trans_sid,0);
ini_set(session.use_only_cookies,1);
session_start();
if (isset($_POST['name']) && isset($_POST['passwort']))
{
$ru = "user";
$rp = "580a03af77ce5ddc2410796eb17b74293f7ffe6a283e18172f7700a1a8de6f27086ae2e6153e4bf7fc61073605d34463917882cb656fea67fc1aea0153e45d08";
if ((hash("sha512", $_POST['passwort']) === $rp) && ($_POST['name'] === $ru))
{
session_regenerate_id(true); // Zusätzliche Sicherheit
$_SESSION['user'] = "Ich";
header("LOCATION: index.php?login=true");
}
else
{
$fehler[] = "Bitte Nutzereingaben überprüfen!";
}
}
Das Logout-Skript:
PHP:
session_start();
$_SESSION = array(); // Leert alle Sessionvariablen
session_destroy();
header("LOCATION: index.php?action=logout");
PHP:
if (!session_is_registered("user"))
{
header("LOCATION: login.php");
}
else
{
// Code
}
Die Einschleusung von JavaScript-Code auf meiner Seite schließe ich (als Laie) mal aus. Alle Datenbank-Ausgaben geschehen mit
PHP:
htmlentities($string, ENT_QUOTES, "UTF-8");

Meiner Meinung nach hätte ich jetzt alle Sicherheitslücken geschlossen. Dem ist wohl aber nicht so. Bin über jeden Hinweis (auch Literatur) bezüglich der Sicherheit dieses Skripts dankbar.
EDIT: Das ganze wird später über HTTPS laufen. "Menschliches Versagen" (kein Ausloggen im INet-Cafe) wird durch die Lebensdauer des Session-Cookies abgefangen.
Viele Grüße
schiese
Zuletzt bearbeitet: