Login  Regeln Aktuelles Datum und Uhrzeit: 04.12.2008, 06:19  
Startseite
Registrieren
Profil
Suchen
Mitgliederliste
Verzeichnis
Impressum



Partner
kostenlose Homepage
Fussball
Kostenloses Forum
SMS kostenlos
Webhosting
Webmasterportal
Kostenlos
Kredit ohne Schufa
Esoterik-Forum
Selbsthilfeforum
Artikel Backlink
Datenrettung
Login-Script-Frage

 
Neues Thema eröffnen   Neue Antwort erstellen    Webmaster Forum -> Serverseitige Websprachen
Vorheriges Thema anzeigen Nächstes Thema anzeigen 
Autor Nachricht
thepiep
Beliebter [User]
Beliebter



Anmeldung: 24.08.06
Beiträge: 335
Wohnort: Aachen

BeitragVerfasst am: 09.04.2007, 11:24    Titel: Login-Script-Frage Antworten mit Zitat

Ich habe für mein CMS ein Loginscript geschrieben und wollte fragen, ob es Verbesserungsmöglichkeiten gibt (Performance) oder sogar Sicherheitslücken:

Das Passwort wird bereits als md5 übergeben (Javascript)

EDIT: Habe die POST-Daten entsprechend "korrigiert"...

Code:

<?php

   //   /admin/include/login.php
   
$qlogins   = mysql_query("SELECT COUNT(1) FROM logins WHERE ip = '".ip."' AND time > '".(time-3600)."';") or ($error[] = mysql_error());
$anz_logins   = mysql_result($qlogins,0);

if($anz_logins <= 3){
   
   $POST_username = strip_tags(mysql_real_escape_string($_POST[username]));
   
    if(strlen($POST_username) >= 3 && !isset($_COOKIE['cmsuser'])){
   
   $quser      = mysql_query("SELECT * FROM user WHERE $config[intern_loginname] = '$POST_username'") or ($error[] = mysql_error());
   
   if($luser   = mysql_fetch_object($quser)){
      if($_POST['password'] == $luser->password){         //   Passwort überprüfen
         
         $logincheck = true;
         
         //   Userdaten "einlesen"

         define('user_id',      $luser->id);
         define('user_email',      $luser->email);
         define('user_nickname',      $luser->nickname);
         define('user_password',      $luser->password);
         define('user_forename',      $luser->forename);
         define('user_surname',      $luser->surname);
         define('user_title',      $luser->title);
         define('user_rang',      $luser->rang);
         define('user_registerdate',   $luser->registerdate);
         define('user_lastlogindate',   $luser->lastlogindate);
         define('user_lastchangedate',   $luser->lastchangedate);
         
      mysql_query("UPDATE user SET lastlogindate = 'time' WHERE id = 'user_id'") or ($error[] = mysql_error());

      setcookie('cmsuser',user_id . user_password,time + $config['intern_logintime'],'/');         //   Keks setzen
         
         $login_message   = '<strong class="positive box">Hinweis: Login erfolgreich!</strong>';      //   Wird nie angezeigt
      
      }else{
         
         $error[]   = 'User "'.$POST_username.'": Falsches Passwort beim Login.';
         $login_message   = '<strong class="error box">Fehler: Passwort falsch!</strong>';
         
         mysql_query("INSERT INTO logins (ip,time,username) VALUES ('".ip."','".time."','$POST_username');") or ($error[] = mysql_error());

   }}else{

      mysql_query("INSERT INTO logins (ip,time,username) VALUES ('".ip."','".time."','$POST_username');") or ($error[] = mysql_error());
 
      $error[]   = 'User "'.$POST_username.'": Nicht gefunden.';
      $login_message   = '<strong class="error box">Fehler: Benutzer existiert nicht!</strong>';
      $_POST['username'] = '';
      $POST_username='';
}}else{
   $error[]   = 'Zu viele Loginversuche.';
   $login_message   = '<strong class="error box">Fehler: Es sind pro Stunde maximal 3 fehlgeschlagene Logins erlaubt!</strong>';
}
?>


Zuletzt bearbeitet von thepiep am 09.04.2007, 14:19, insgesamt einmal bearbeitet


Nach oben
Private Nachricht senden Website dieses Benutzers besuchen
lundner
Beliebter [User]
Beliebter



Anmeldung: 15.11.06
Beiträge: 312
Wohnort: Zingst

BeitragVerfasst am: 09.04.2007, 12:09    Titel: Antworten mit Zitat

variablen solltest du nie ungeprüft in mysql_querys übernehmen:
Code:

$error[]   = 'User "'.$_POST[username].'": Falsches Passwort beim Login.';
$login_message   = '<strong class="error box">Fehler: Passwort falsch!</strong>';


hier gibst du den übergebenen namen ungefiltert wieder aus, relativ gefährlich, vorher durch strip_tags etc. alles gefährliche entfernen lassen

dann zu der mysql-sache:
Code:

mysql_query("INSERT INTO logins (ip,time,username) VALUES ('".ip."','".time."','$_POST[username]');") or ($error[] = mysql_error());


niemals die $_POST-Variablen direkt in die query schreiben! (siehe -> http://de.wikipedia.org/wiki/SQL-Injektion

vorher auf jedenfall ein:
Code:

mysql_real_escape_string($_POST[username])

verwenden...

das wär erstmal das erste was ich so anzubringen habe Winken

_________________
meine Homepage: lundner.com
meine Fotos:photos.lundner.com


Nach oben
Private Nachricht senden Website dieses Benutzers besuchen AIM-Name MSN Messenger
thepiep
Beliebter [User]
Beliebter



Anmeldung: 24.08.06
Beiträge: 335
Wohnort: Aachen

BeitragVerfasst am: 11.04.2007, 13:44    Titel: Antworten mit Zitat

Danke für Tipps - habe die Änderungen umgesetzt und hoffe, dass das Script jetzt einigermaßen sicher ist^^

Nach oben
Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

Gehe zu:  

Ähnliche Beiträge
Thema Autor Forum Antworten Verfasst am
Keine neuen Beiträge PHP Script Bilder Upload umschreiben?! LizzardX Einsteigerforum 0 03.12.2008, 22:57 Letzten Beitrag anzeigen
Keine neuen Beiträge Kurze Frage... AnkiSüdamerikaFan Sitecheck 0 01.12.2008, 17:14 Letzten Beitrag anzeigen
Keine neuen Beiträge Biete Counter Script wie ipcounter un... charbel Kleinanzeigen 1 24.11.2008, 13:37 Letzten Beitrag anzeigen
Keine neuen Beiträge Mein File Upload-Script - Funktionier... nicogames Serverseitige Websprachen 0 10.11.2008, 18:05 Letzten Beitrag anzeigen
Keine neuen Beiträge Script umschreiben eforium Einsteigerforum 3 04.11.2008, 22:13 Letzten Beitrag anzeigen
Threadübersicht