Hallo zusammen,
ich bin neu hier im Forum und beschäftige mich noch nicht sehr lange mit php. Das erste wirklich nützliche Skript, dass ich programmiert habe war jetzt ein Login.
Meine Frage an die erfahrenen PHPler: Ist dieses Skript so in Ordnung oder gibt es irgendwelche groben Fehler die ich gemacht habe oder Sicherheitsaspekte die ich nicht beachtet habe?
Danke für jeden Kommentar.
mfg, daniel.
login.php: Loginseite mit Überprüfung der Logindaten
logout.php: Skript auf das zum Logout verlinkt wird
secure.php: Zur einbindung in jede Seite des gesperrten Bereiches (mit require() )
ich bin neu hier im Forum und beschäftige mich noch nicht sehr lange mit php. Das erste wirklich nützliche Skript, dass ich programmiert habe war jetzt ein Login.
Meine Frage an die erfahrenen PHPler: Ist dieses Skript so in Ordnung oder gibt es irgendwelche groben Fehler die ich gemacht habe oder Sicherheitsaspekte die ich nicht beachtet habe?
Danke für jeden Kommentar.
mfg, daniel.
login.php: Loginseite mit Überprüfung der Logindaten
PHP-Code:
<?php
//Geschützter Bereich
$safe_page = "intern/index.php";
//Session starten
ini_set('session.use_only_cookies', 1);
session_set_cookie_params(1440);
session_name("EBSESSID");
session_start();
//Falls bereits eingeloggt
if ($_SESSION['login'] == true) {
header('Location: ' . $safe_page);
exit();
}
//Logindaten prüfen
if (isset ($_POST['user_name'],$_POST['user_pass']) )
{
//Cookie prüfen
if ($_COOKIE[session_name()] != session_id()) {
$_SESSION = array();
session_destroy();
if (!isset($_COOKIE[session_name()])) {
header('Location: login.php?cookie=false');
} else {
header('Location: login.php');
}
exit();
}
//Eingaben aus POST als Hash
$user_name = $_POST['user_name'];
$user_hname = hash('sha256', $user_name);
$user_hpass = hash('sha256', $_POST['user_pass']);
//Username und Passwort aus Datenbank
$dbarray = file("userdb.dat");
$user_found = null;
foreach($dbarray as $user){
$elemente = explode("|",$user);
if ($elemente[0] == $user_hname){
$dbuser_hname = $elemente[0];
$dbuser_hpass = $elemente[1];
$user_found = $elemente[2];
}
}
if ($user_hname == $dbuser_hname && $user_hpass == $dbuser_hpass && isset($user_found)){
$_SESSION['login'] = true;
$_SESSION['user_clearname'] = $user_found;
$_SESSION['user_name'] = $user_name;
header('Location: ' . $safe_page);
} else {
//Login falsch
$_SESSION['login'] = false;
header('Location: login.php?valid=false');
}
} else {
if ($_GET['valid'] == 'false') { echo 'Benutzername oder Passwort falsch.<br />'; }
if ($_GET['cookie'] == 'false') { echo 'Bitte Cookie akzeptieren.<br />'; }
//Formular
echo '<form action="login.php" method="post">';
echo 'User Name: <input type="text" name="user_name"><br />';
echo 'User Passwort: <input type="password" name="user_pass"><br />';
echo '<input type="submit" name="Submit" value="einloggen">';
echo '</form>';
}
?>
PHP-Code:
<?php
ini_set('session.use_only_cookies', 1);
session_name("EBSESSID");
session_start();
$_SESSION = array();
setcookie(session_name(), '', time()-3600,'/');
session_destroy();
header('Location: login.php');
?>
PHP-Code:
<?php
ini_set('session.use_only_cookies', 1);
session_name("EBSESSID");
session_start();
if ($_SESSION['login'] != true) {
header('Location: login.php');
exit;
}
?>
Kommentar