Hallo alle miteinander,
ich hab vor einigen Jahren angefangen, mit PHP herumzuspielen (Betonung liegt auf "spielen), bin aber über gewisse Grundfunktionen nie hinausgekommen.
Nun habe ich mein erstes, größeres projekt vor der Brust.
Und zwar arbeite ich als (Hilfs-)Admin bei einer Firma, die Webauftritte erstellt und diese auch hostet.
Um nun unsere Server zu überwachen setzen wir das Tool-Nagios ein, welches seine Daten per Plugin (auch) in eine MySQL-Datenbank schreibt.
Nun hätten wir gerne, einfach als nettes Feature, dass jeder Kunde per Weboberfläche den aktuellen Status "seines" Servers einsehen kann. Das ist an sich keine großartig sicherheitskritische Sache, dennoch mache ich mir nun, im Gegensatz zu meinen früheren Spielereien, Gedanken über die Sicherheit, weswegen ich mich zuerst damit beschäftigt habe, wie man einen halbwegs sicheren Login gestalten könnte.
Das Folgende ist bis jetzt heraus gekommen, es wäre toll, wenn jemand die Zeit fände, einmal drüber zu schauen und mir dann sagt, was ich verbessern, anders machen soll.
Ich habe das natürlich jetzt nicht einfach ins Blaue programmiert, ich habe mich vorher schon informiert (Stichwort RTFM), aber da ich eben bisher nicht so eine große Ahnung von PHP habe... aber seht selbst:
Login.php - Login-Formular
Logout.php - Session killen
info.php - zu schützende Seite
auth.inc.php - Prüfung, ob User eingeloggt ist
Login.php
logout.php
info.php
auth.inc.php
Vielen Dank für eure Mühe im voraus.
Mfg,
Daniel
ich hab vor einigen Jahren angefangen, mit PHP herumzuspielen (Betonung liegt auf "spielen), bin aber über gewisse Grundfunktionen nie hinausgekommen.
Nun habe ich mein erstes, größeres projekt vor der Brust.
Und zwar arbeite ich als (Hilfs-)Admin bei einer Firma, die Webauftritte erstellt und diese auch hostet.
Um nun unsere Server zu überwachen setzen wir das Tool-Nagios ein, welches seine Daten per Plugin (auch) in eine MySQL-Datenbank schreibt.
Nun hätten wir gerne, einfach als nettes Feature, dass jeder Kunde per Weboberfläche den aktuellen Status "seines" Servers einsehen kann. Das ist an sich keine großartig sicherheitskritische Sache, dennoch mache ich mir nun, im Gegensatz zu meinen früheren Spielereien, Gedanken über die Sicherheit, weswegen ich mich zuerst damit beschäftigt habe, wie man einen halbwegs sicheren Login gestalten könnte.
Das Folgende ist bis jetzt heraus gekommen, es wäre toll, wenn jemand die Zeit fände, einmal drüber zu schauen und mir dann sagt, was ich verbessern, anders machen soll.
Ich habe das natürlich jetzt nicht einfach ins Blaue programmiert, ich habe mich vorher schon informiert (Stichwort RTFM), aber da ich eben bisher nicht so eine große Ahnung von PHP habe... aber seht selbst:
Login.php - Login-Formular
Logout.php - Session killen
info.php - zu schützende Seite
auth.inc.php - Prüfung, ob User eingeloggt ist
Login.php
PHP-Code:
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
session_start();
$db_link = mysql_connect("127.0.0.1","root","");
mysql_select_db("nagios");
$username = mysql_real_escape_string($_POST['username']);
$password = md5(mysql_real_escape_string($_POST['password']));
$sql = "SELECT username FROM user WHERE username='$username' AND password='$password';";
$result = mysql_query($sql);
if(mysql_num_rows($result) == 1)
{
$_SESSION['login'] = true;
$_SESSION['user'] = $username;
header('Location: http://127.0.0.1/info.php');
exit;
}
else
{
header('Location: http://127.0.0.1/login/login.php');
exit;
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<title>Geschützter Bereich</title>
</head>
<body>
<form action="login.php" method="post">
<p>
Username:<input type="text" name="username" /><br />
Passwort:<input type="password" name="password" /><br />
<input type="submit" value="Anmelden" />
</p>
</form>
</body>
</html>
PHP-Code:
<?php
session_start();
session_destroy();
header('Location: http://127.0.0.1/login/login.php');
exit;
?>
PHP-Code:
<?php
include("login/auth.inc.php");
phpinfo();
?>
<a href="login/logout.php">Logout</a>
PHP-Code:
<?php
session_start();
if( (!isset($_SESSION['login']) || !$_SESSION['login']) || (!isset($_SESSION['user'])))
{
header('Location: http://127.0.0.1/login/login.php');
exit;
}
?>
Mfg,
Daniel
Kommentar