Login  Regeln Aktuelles Datum und Uhrzeit: 11.10.2008, 12:49  
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: 329
Wohnort: NRW

BeitragVerfasst am: 09.04.2007, 12: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, 15: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, 13: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: 329
Wohnort: NRW

BeitragVerfasst am: 11.04.2007, 14: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 frage zu htm luusbueb6 Einsteigerforum 1 04.10.2008, 15:10 Letzten Beitrag anzeigen
Keine neuen Beiträge Verwirrende Zeichensetzungen im PHP-S... Kristallprinz Einsteigerforum 12 03.10.2008, 05:09 Letzten Beitrag anzeigen
Keine neuen Beiträge [B] Immobilienportal-Script MarketingX Kleinanzeigen 0 02.10.2008, 08:20 Letzten Beitrag anzeigen
Keine neuen Beiträge Suchmaschine Script dsam Suchmaschinen/Promotion 4 25.09.2008, 21:31 Letzten Beitrag anzeigen
Keine neuen Beiträge Kurze Frage: Kann mir schnell jemand ... Nightcat Einsteigerforum 3 10.09.2008, 21:29 Letzten Beitrag anzeigen
Threadübersicht