|
| Autor |
Nachricht |
Invis_Hunter Stammuser [User]

Anmeldung: 09.04.05 Beiträge: 31
|
Verfasst am: 04.03.2007, 13:31 Titel: Sicherheit meines Login-Scripts |
|
|
Hallo,
ich habe mir für eine Hompage ein login-script gebastelt. Nun wollte ich euch mal fragen was man daran verbessern kann (in sachen Sicherheit).
Hier mal der Code zu meinem Loginform:
| Code: |
<? if(!isset($_POST['login_nickname']) OR !isset($_POST['login_passwort'])){ ?>
<center><h3>Login</h3></center>
<form action="" name="login" method="post">
<table align="center" border="0.5" style="border:solid 1px #000000;">
<tr>
<td width="100px">
Nickname
</td>
<td>
<input type="Text" name="login_nickname" size="20">
</td>
</tr>
<td width="100px">
Passwort
</td>
<td>
<input type="Password" name="login_passwort" size="20">
</td>
</tr>
</table>
<br>
<center><input type="Submit" name="submit" value="Login"> <input type="reset"></center>
</form>
<? }else{
$sql = 'SELECT
name,
passwort
FROM
admin
WHERE
name = "'.$_POST['login_nickname'].'" && passwort = "'.md5($_POST['login_passwort']).'"';
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
if(md5($_POST['login_passwort']) != $row['passwort']){ ?>
<center><br><font color="red">Sie haben ein falsches Passwort eingegeben!</font><br><br></center>
<? }else{
$_SESSION['ADMIN_NAME'] = ''.$row['name'].'';
$_SESSION['ADMIN_IP'] = ''.$_SERVER['REMOTE_ADDR'].'';
?>
<center><br>Sie haben sich erfolgreich eingeloggt, sie werden in einer Sekunde weitergeleitet!<br><br></center>
<head>
<meta http-equiv="refresh" content="1; url=index.php?show=eintraege">
</head>
<? }
} ?>
|
Ich überprüfe dann mit folgendem Code ob der admin eingeloggt ist:
| Code: |
<? if(isset($_SESSION['ADMIN_NAME']) && $_SESSION['ADMIN_IP'] == $_SERVER['REMOTE_ADDR']){
echo 'Eingeloggt';
}?>
|
Jetzt wollte ich halt fragen was man daran verbessern kann?
Danke schonmal im vorraus!
mfg
PS: Schreibfehler sind beabsichtigt und dienen zur allgemeinen Belustigung 
|
|
| Nach oben |
|
 |
eforium Bekannter [Mod]


Anmeldung: 20.01.06 Beiträge: 1349 Wohnort: Irgendwo i ...
|
|
| Nach oben |
|
 |
chris1988 Bekannter [User]

Anmeldung: 12.12.05 Beiträge: 1642
|
|
| Nach oben |
|
 |
Invis_Hunter Stammuser [User]

Anmeldung: 09.04.05 Beiträge: 31
|
Verfasst am: 04.03.2007, 18:50 Titel: |
|
|
| eforium hat folgendes geschrieben: | Total unsicher.
wenn jemand als name
| Zitat: | | " OR `userid` = '1' -- |
eingibt, bekommt er Admin zugang.
[...] |
Ich habe es getestet. Da ich nach der Datenbankabfrage nochmal überprüfe wie das Passwort ist, kann man das nicht umgehen, weil er anzeigt das ein falsches passwort eingegeben wurde.
Aus sicherheitsgründen hab ich die abfrage nun so modifiziert:
| Code: |
name = "'.addslashes($_POST['login_nickname']).'" && passwort = "'.md5($_POST['login_passwort']).'"'; |
Könnt ihr mir noch weitere Tipps geben?
PS: Danke an alle für die bisherige hilfe! 
|
|
| Nach oben |
|
 |
eforium Bekannter [Mod]


Anmeldung: 20.01.06 Beiträge: 1349 Wohnort: Irgendwo i ...
|
|
| Nach oben |
|
 |
lundner Beliebter [User]


Anmeldung: 15.11.06 Beiträge: 312 Wohnort: Zingst
|
Verfasst am: 04.03.2007, 22:40 Titel: |
|
|
das sicherste ist fast alle eingaben gegen muster zu testen - sprich du schaust, ob die eingabe nur zeichen enthält, die du auch ausdrücklich erlaubt hast!
wenn es nur um einen admin-bereich geht sollte die nutzung von .htaccess doch sicher sein oder?!@all _________________ meine Homepage: lundner.com
meine Fotos: photos.lundner.com
|
|
| Nach oben |
|
 |
Invis_Hunter Stammuser [User]

Anmeldung: 09.04.05 Beiträge: 31
|
Verfasst am: 05.03.2007, 13:41 Titel: |
|
|
So, also vielen Dank nochmal an alle
@lundner
Es geht mitlerweile um einen ganzen Benutzter-Login, also um eine größere seite mit registrierungsoptionen usw. Deswegen währs mir so schon ganz lieb, weil ich ja sonst für jeden benutzter eine eigene htaccess erstellen müsste.
mfg
|
|
| Nach oben |
|
 |
800XE Bekannter [Mod]


Anmeldung: 24.10.04 Beiträge: 1408 Wohnort: Speyer
|
Verfasst am: 06.03.2007, 00:07 Titel: |
|
|
addslashes ist doch normal automatisch durch MagiCQuotes drin
und wenn man dann selbst nochmal slashesAdded, dann sind sie doppelt .... _________________
Seien wir realistisch, versuchen wir das Unmögliche!
CMS800 :::::::::: Andy 800XE Zmuda :::::::::
ich bin nicht unhöflich, ich bin binär
|
|
| Nach oben |
|
 |
Invis_Hunter Stammuser [User]

Anmeldung: 09.04.05 Beiträge: 31
|
Verfasst am: 06.03.2007, 16:21 Titel: |
|
|
Aber noch eine Frage:
Ist das so jetzt einigermassen sicher, weil ich das script gerne so langsam Online stellen möchte?
mfg
|
|
| Nach oben |
|
 |
chris1988 Bekannter [User]

Anmeldung: 12.12.05 Beiträge: 1642
|
Verfasst am: 06.03.2007, 16:34 Titel: |
|
|
So wie ich das sehe gibt es noch keinen Bruteforce-Schutz. Der sollte aber wohl gegeben sein!?
Habe im Moment ein ähnliches Script und bin so in etwa genausoweit wie du hier jetzt
Hatte gedacht, dass man das ganze mit diesen dynamischen Bildern lösen könnte, bei denen sich die Aufschrift immer ändert und letztere abgefragt wird. Über einen Link darüber oder alternative Ideen würde ich mich sehr freuen
(Für einen normalen Benutzerlogin ist das wahrscheinlich zu nervig, ich nutze das nur für ein Admin-Bereich).
Grüße,
chris _________________ Mancher ertrinkt lieber,
als daß er um Hilfe ruft.
(Wilhelm Busch)
|
|
| Nach oben |
|
 |
Invis_Hunter Stammuser [User]

Anmeldung: 09.04.05 Beiträge: 31
|
Verfasst am: 06.03.2007, 16:41 Titel: |
|
|
Das mit der Bild abfrage ist auch recht leicht zu umgehen wenn man will. Ein bestimmter 1 Click-Hoster benutzt ein ziemlich komplizierten Bilder-Code den man eingeben kann, allerdings gibts programme die den ziemlich leicht knacken können.
Ich hätte eine alternative...weiss aber nicht ob das so der renner ist:
Du erstellst für jeden (Da du ja nur enen Adminlogin machst) besucher der Login Seite eine Session und ersellst dort eine Variable die anzeigt wie oft der Benutzter sich schon versucht hat unerfolgreich einzuloggen. Wenn die Zahl dann bei 3 oder so ist dann wird der Login für die Session halt gespeert und er kann es erst wieder versuchen wenn er ne neue Session bekommt oder du machst halt ein Script welches in in eine Datenbank einträgt und nach 30 Minuten oder so wieder entspeerst.
Sowas in der art (also mit der Datenbank) hab ich mir auch gedacht, nachdem du mich auf den Tipp gebracht hast (Danke! ).
mfg
|
|
| Nach oben |
|
 |
eforium Bekannter [Mod]


Anmeldung: 20.01.06 Beiträge: 1349 Wohnort: Irgendwo i ...
|
Verfasst am: 06.03.2007, 19:19 Titel: |
|
|
Wenn du dann mehrere Seiten hast, überprüfst du am besten mit Cookie und IP (da manche Proxy haben...) die Sessionsid. Diese kann auch selber erstellt werden, und muss nicht via session_start() gestartet werden.
Am besten ist es dann auch, wenn du die Sessionen inkl. eine Cookiecode in die DB einfügst, und auf jeder Seite überprüfst.
| Zitat: | XSS kurz erklärt
XSS-Sicheres-Programmieren ist, keinen Angaben zu vertrauen, sondern alle zu überprüfen. Einfacher geht es, wenn man sagt, was man darf, und nicht, wenn man sagt, was man nicht darf. | [/quote] _________________
Deihro Internet Programming - Ihre Webseite zu angenehmen Konditionen
Sie suchen eine TemplateEngine? Klicken Sie!
|
|
| Nach oben |
|
 |
|
|