S
sevY
Hi zusammen,
ich habe ein CMS für einen Kunden erstellt, welches ich aus diversen Gründen nicht via HT Authentication schützen kann bzw. möchte.
Als Lösung habe ich nun folgendes:
Beim Aufrufen der Startseite des CMS wird geprüft, ob eine Session mit der entsprechenden Variablen existiert.
Nehmen wir an, der User hat sich noch nicht ausgewiesen. Es öffnet sich als das Login Fenster:
Dort wird überprüft, ob das im Formular eingegebene Passwort mit dem in der MySQL Datenbank übereinstimmt.
Wenn ja wird eine Sessionvariable mit dem Wert true gesetzt und die SessionID etc. in ein Cookie mit 1Std Gültigkeit geschrieben.
Sämtliche Dateien, die nun Aktionen ausführen haben folgende Datei included:
Ich frage mich nun, wie sicher ist meine Lösung?
Über die Browserzeile werden ja logischerweise keine Variablen übergeben, also fällt die Möglichkeit dort etwas zu injizieren aus. Nur wenn ein rechtmäßiger User seine SessionID weitergibt, könnte jemand anders dort zugreifen.
Das einzige was mir in den Sinn kommen würde ist, das der Angreifer entweder „irgendwie“ diese Sessionvariable, dessen Namen er nicht kennt, registrieren müsste oder an das Cookie, welches beim rechtmäßigen Client ist, herankommen müsste, um die SessionID & co zu bekommen.
Wie sicher schätzt ihr meine Lösung ein?
Fort Knox soll das ganze nicht werden. Wichtig ist nur, das jemand, der mehr oder weniger aus „Versehen“ auf das CMS stößt oder vielleicht auch absichtlich versucht, falsche Inhalte via CMS einzutragen oder etwas zu löschen, abgehalten wird.
Liebe Grüße
Yves
ich habe ein CMS für einen Kunden erstellt, welches ich aus diversen Gründen nicht via HT Authentication schützen kann bzw. möchte.
Als Lösung habe ich nun folgendes:
Beim Aufrufen der Startseite des CMS wird geprüft, ob eine Session mit der entsprechenden Variablen existiert.
PHP:
<?php
session_start();
if(!$_SESSION['user'])
{
echo'<body onload="javascript:login();">';
}
else
{
echo'<body>';
}
?>
Nehmen wir an, der User hat sich noch nicht ausgewiesen. Es öffnet sich als das Login Fenster:
PHP:
<?php
require_once('config.inc.php');
if($_POST['action']=='login')
{
$read=mysql_query("select password from $db_tab_users where login='administrator'",$handler);
$a=mysql_fetch_array($read);
if($a['password']==$_POST['password'])
{
session_start();
$_SESSION['user']=true;
setcookie(session_name(), session_id(), time()+3600);
echo'<meta http-equiv="refresh" content="0; URL=javascript:window.close();">';
exit();
}
else
{
echo'<meta http-equiv="refresh" content="0; URL=javascript:alert(\'Anmeldung fehlgeschlagen!\');">';
}
}
?>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<meta http-equiv="expires" content="0">
<meta http-equiv="pragma" content="no-cache">
<meta name="robots" content="noindex,nofollow">
<link rel="stylesheet" type="text/css" href="default.css">
<script language="javascript" type="text/javascript" src="function.inc.js"></script>
</head>
<body bgcolor="#1f1f1f">
<table width="100%" height="100%">
<tr>
<td align="center" valign="middle">
<table>
<tr>
<td align="center" valign="middle">
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
<input type="hidden" name="action" value="login">
<input type="text" name="password" value="Passwort"><p>
<input type="submit" value="Login">
</form>
</td>
</tr>
<tr>
<td align="center" valign="middle">
Stellen Sie sicher, das <b>Cookies</b> in Ihrem Browser aktiviert sind.
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
Dort wird überprüft, ob das im Formular eingegebene Passwort mit dem in der MySQL Datenbank übereinstimmt.
Wenn ja wird eine Sessionvariable mit dem Wert true gesetzt und die SessionID etc. in ein Cookie mit 1Std Gültigkeit geschrieben.
Sämtliche Dateien, die nun Aktionen ausführen haben folgende Datei included:
PHP:
<?php
session_start();
if(!$_SESSION['user'])
{
die();
}
?>
Ich frage mich nun, wie sicher ist meine Lösung?
Über die Browserzeile werden ja logischerweise keine Variablen übergeben, also fällt die Möglichkeit dort etwas zu injizieren aus. Nur wenn ein rechtmäßiger User seine SessionID weitergibt, könnte jemand anders dort zugreifen.
Das einzige was mir in den Sinn kommen würde ist, das der Angreifer entweder „irgendwie“ diese Sessionvariable, dessen Namen er nicht kennt, registrieren müsste oder an das Cookie, welches beim rechtmäßigen Client ist, herankommen müsste, um die SessionID & co zu bekommen.
Wie sicher schätzt ihr meine Lösung ein?
Fort Knox soll das ganze nicht werden. Wichtig ist nur, das jemand, der mehr oder weniger aus „Versehen“ auf das CMS stößt oder vielleicht auch absichtlich versucht, falsche Inhalte via CMS einzutragen oder etwas zu löschen, abgehalten wird.
Liebe Grüße
Yves