Weitere Artikel aus dem Webentwickler Blog
Datenbankprogrammierung - PHP - Tipps & Tricks

 

 

Sicherheitstipps für PHP5: Session-basierte Authentifizierung

Eine weitere Möglichkeit der Authentifizierung besteht darin, die Zugangsdaten eines Anwenders auszuwerten und in einer Session zu registrieren. Sie sollten bei der Übertragung mithilfe eines HTML-Formulars berücksichtigen, dass das Passwort im Klartext übertragen wird und daher die POST-Methode eingesetzt werden sollte. Sie könnten zusätzlich clientseitig das Passwort mithilfe von JavaScript verschlüsseln. Dies setzt jedoch voraus, dass beim Anwender die Ausführung von JavaScript zugelassen ist.

 

 

Um das folgende Beispiel so flexibel wie möglich zu gestalten, sollten Sie dafür sorgen, dass die Benutzeridentifizierung in eine externe Datei ausgelagert wird. Ich habe hierfür die Datei check.php angelegt. In dieser befindet sich folgende Funktion:

<?php

// Nutzeridenifikations-Funktion
function check_nutzer($pwddatei=".htpasswd") {
session_start();

if (isset($_SESSION["versuch"]) && $_SESSION["versuch"]>2) {
return false;
}

if (!isset($_SESSION["auth"]) && !isset($_POST["username"])) {
return false;
}

if (isset($_POST["username"])) {
if (!isset($_SESSION["versuch"])) {
$_SESSION["versuch"]=1;
} else {
$_SESSION["versuch"]++;
}

if (!isset($_COOKIE[session_name()])) {
return false;
}

$nutzer = trim($_POST["username"]);
$pwd = trim($_POST["passwort"]);

if (strlen($nutzer)<3) {
return false;
}

$pwd=$nutzer.":".crypt($pwd,$nutzer[2].$nutzer[1])."n";
$pwd_liste=file($pwddatei);

if (array_search($pwd,$pwd_liste)!== false) {
$_SESSION["auth"]=$nutzer;
return true;
} else {
return false;
}
}

if (isset($_GET["logout"])) {
session_destroy();
session_unset();
unset($_SESSION);
return false;
} else {
return true;
}
}

?>

 

Die Datei, welche die Eingabemaske samt Funktionsaufruf enthält, wird als login.php angelegt:

<?php

include("check.php");
if (!check_nutzer()) {

?>

<html>
<head>
<title>Eingang</title>
</head>
<body>
<h1>Login</h1>
<form method="post" action="<?php echo $PHP_SELF ?>">
<p>Benutzer:
<input type="text" name="username">
</p>
<p>Passwort:
<input type="password" name="passwort">
</p>
<p>
<input type="submit" name="Submit" value="Login">
</p>
</form>

<?php

if (isset($_SESSION["versuch"]) && $_SESSION["versuch"] < 3) {
echo "Login nicht erfolgreich!
Es stehen Ihnen noch ".
(3-$_SESSION["versuch"]) .
" Versuche zur Verfügung!";
} else if ($_SESSION["versuch"] == 3) {
echo "Es stehen Ihnen keine
weiteren Versuche zur Verfügung!";
}

?>

</body>
</html>

<?php

} else {

?>

<html>
<head>
<title>Private Zone</title>
</head>
<body>
<h1>Herzlich Willokmmen</h1>
<a href="<?php echo $PHP_SELF ?>?logout=1">Logout</a>
</body>
</html>

<?php

}

?>

 

Ganzen Artikel lesen... 

Kundenkommentare
Social Bookmarks
elo-web bookmarken bei: Mr. Wong elo-web bookmarken bei: Webnews elo-web bookmarken bei: Icio elo-web bookmarken bei: Oneview elo-web bookmarken bei: Yigg elo-web bookmarken bei: Linkarena elo-web bookmarken bei: Digg elo-web bookmarken bei: Reddit elo-web bookmarken bei: Simpy elo-web bookmarken bei: StumbleUpon elo-web bookmarken bei: Netscape elo-web bookmarken bei: Furl elo-web bookmarken bei: Yahoo elo-web bookmarken bei: Blogmarks elo-web bookmarken bei: Diigo elo-web bookmarken bei: Technorati elo-web bookmarken bei: Newsvine elo-web bookmarken bei: Blinkbits elo-web bookmarken bei: Ma.Gnolia elo-web bookmarken bei: Smarking elo-web bookmarken bei: Netvouz elo-web bookmarken bei: Folkd elo-web bookmarken bei: Spurl elo-web bookmarken bei: Google elo-web bookmarken bei: Blinklist
URL zu dieser Seite
Einfach den Quelltext kopieren und auf Ihrer Webseite einbinden

Kontakt
Newsletter | Kontakt | RSS Feed
Warenkorb: 0 Artikel
Gesamtwert: EUR 0,00
Home PHP/MySQL & JavaScript  Sicherheitstipps für PHP5: Session-basierte Authentifizierung