[Tutorial] Login + Registrierung über eine MySql-DB [+ Hilfedateien]

  • Ich nutze Windows 7 Ultimate x64
    Soll ich den MD5 Befehl ausbauen, oder wird das dann unsicher?
    Oder ein PHP befehl basteln (das kann ich leider nicht)
    was soll ich tun??

  • So würde dein Code jetzt mit der php MD5 Version aussehen (es hat sich nicht aufgehangen)

    Spoiler anzeigen
    [autoit]

    Code wird auf Wunsch von Yinzao nichtmehr angezeigt. MD5 Befehl steht im Post davor.

    [/autoit]

    mfg BB

    "IF YOU'RE GOING TO KILL IT
    OPEN SOURCE IT!"

    by Phillip Torrone

    Zitat von Shoutbox

    [Heute, 11:16] Andy: ....böseböseböseböse....da erinnere ich mich daran, dass man den Puschelschwanz eines KaRnickels auch "Blume" nennt....ob da eins zum anderen passt? :rofl: :rofl: :rofl: :rofl:

    https://autoit.de/index.php?page…leIt#post251138

    Neon Snake

    Einmal editiert, zuletzt von BadBunny (8. Mai 2011 um 14:19)

  • Ich hätte mal ne kleine Frage.
    Ich hab eine MySQL Datenbank angelegt, jedoch wenn ich den Link zur Datenbankverwaltung phpmyadmin anklicke sagt es mir "Diese Web Seite ist nicht Verfügbar" weiß jemand woran das liegen kann?

  • #Update des Tutorials:

    + Datei "db_config.php" enthält nun die MySQL-Datenbankverbindungsdaten und diese müssen somit nicht in jeder php-Datei stehen. Mit "require_once" wird die Datei nun in jede php-Datei, die diese Daten benötigt, eingebunden.
    + Die MD5-Funktion in der Login-Funktion gelöscht und in die php-Datei verlagert -> Code verkürzt
    + [ autoit][ /autoit] - Tags in [ php][ /php] - Tags geändert :P

    Komplettes Tutorial habe ich angepasst.

  • Im Notfall könnte man schnell eine Php Seite machen die den MD5 Wert zurückgibt, das ist schnell gemacht.


    Das ist unsicher, da die Daten in KLARTEXT an die Webseite gesendet werden.
    Besser währe es, wenn der MD5-Hash online generiert werden soll, das Kennwort Client-Seiting zu verschlüsseln und in der PHP-Datei entschlüsseln und dann zu hashen.

    Komplettes Tutorial habe ich angepasst.


    Du weißt, dass du "$HTTP_GET_VARS" verwendest, und dass veraltet ist?
    (Außerdem habe ich gehört, dass die "mysql_real_escape_string"-Funktion nicht immer zuverlässig Funktioniert. Ich würde daher die MySQLi-Klasse vorziehen. Aber das ist für ein einfaches Tutorial wohl zu viel ;) ) Edit: Beispiel im Post danach.

    Magnus

    Einmal editiert, zuletzt von Magnus (9. Mai 2011 um 19:41)

  • Prepared Statements sind schon was feines. Kleines Beispiel:

    Spoiler anzeigen
  • Hallo,

    sry wenn ich hier nochmal ein alten Thread hoch hole aber ich versuche derzeit auch das Tutorialskript irgendwie bei mir zu übernehmen. Ansich hab ich da aber nun 2 Fragen zu...

    Ich wollte eigentlich einen Login machen wobei die Userdaten meines vorhandenen Forums verwendet werden. Soweit eigentlich kein Problem... jedoch verschlüsselt vBulletin nicht direkt mit MD5 sondern dieser Wert wird noch mit einem Salt-Wert addiert und dann erneut MD5 verschlüsselt...

    (siehe offizielles statement vBulletin: http://www.vbulletin-germany.com/forum/showthread.php/11554-Passwort-zusammensetzung?p=68217&viewfull=1#post68217 )

    Was muß ich in der login.php ändern damit auch vBulletinpasswörter akzeptiert werden?

    Denn wenn ich zum Beispiel ein Testuser per Hand anlege und dem ein echtes MD5 PW gebe funktioniert es einwandfrei... im original jedoch leider nicht.

    Und zum anderen: Das PW was eingegeben wird in der GUI wird ja bis es auf dem Server verschlüsselt wird als Klartext geschickt... wie kann man nun den zuständigen Teil schon vorher mit md5 hashen?

    [autoit]

    $iRValue = _INetGetSource("<URL>/login.php?benutzername=" & $sBenutzername & "&passwort=" & $sPasswort)

    [/autoit]

    LG

    Mein AutoIT Smartphone GUI >>hier<<

    Der Mensch ist das einzige Tier, dass arbeiten muss.

  • Jemand ne Idee?

    Bin den ganzen Tag am rumprobieren aber meine Kentniss reichen leider nicht aus :(

    Ansich ist eignetlich "nur" folgendes zu machen:

    Es muß zusätzlich noch neben der Spalte username und passwort auch die spalte "salt" ausgelesen werden. Dort stehen weitere Werte wie zum beispiel "12345"

    Danach muß das md5 gehashte Passwort mit dem salt erweitert werden. Nicht addiert sondern nur hintendrangehangen werden. und der neue wert wird wieder per MD5 gehasht.. diese neu erhaltene passort ist nun mein eigentlich verschlüsseltes PW welches in meiner DB steht.

    Und ich ha jetzt schon so viele Sachen probiert das ich gar nich mehr weiß was ich alles getestet habe und was niht.

    Hat irgendwer die Möglichkeit das Skript anzupassen das er die Spalte alt vorher mit ausliest, es hintendranhängt und dann erneut md5 hasht..? so könnte ich mit dem skript auch meine forenuser nutzen...

    Mein AutoIT Smartphone GUI >>hier<<

    Der Mensch ist das einzige Tier, dass arbeiten muss.

  • Nohcmal ein kleiner Hilferuf von mir... würde mir irgendjemand zeigen wie man das Skript vBulletin-Forum-fähig bekommen würde?

    Ich hab jetzt die ganzen Tage rumprobiert und bisher immer ohne Erfolg. "Passwort falsch" lautet die devise. Änder ich bei meinem Testuser das Passwort direkt in ein MD5 Hash wird das PW problemlos erkannt :(

    Mein AutoIT Smartphone GUI >>hier<<

    Der Mensch ist das einzige Tier, dass arbeiten muss.

  • Ja und Nein :)

    Die ausschlaggebende Zeile aus Deinem Beitrag war:

    $password = md5($password . $vbulletin->userinfo['salt']);

    Jedoch hab ich schon so viele Varianten ausprobiert, damit diese Zeile in dem Skript auch funktioniert das mir der Kopf raucht.

    Derzeit nutz ich immer noch diese Vorlage hier:

    Spoiler anzeigen

    In dem Code muß also das if (md5($Passwort) == $Dbmd5Passwort) irgendwie angepasst werden..... ?(?(?(

    Mein AutoIT Smartphone GUI >>hier<<

    Der Mensch ist das einzige Tier, dass arbeiten muss.

  • PHP
    if (md5($Passwort) == $Dbmd5Passwort)
    PHP
    $password = md5($password . $vbulletin->userinfo['salt']);


    Du siehst den Unterschied?
    Du prüfst hier nur den MD5 aus $Passwort gegen den EIntrag aus der Datenbank. Das vB erstellt den Datenbankeintrag aber aus

    PHP
    $password = md5(md5($password) . $vbulletin->userinfo['salt'])


    Es wird also an den MD5 des gewählten Passworts der salt angehängt und daraus dann ein MD5 für die Datenbank erstellt.
    Bei dir müste das dann ungefähr so aussehen:

    PHP
    if (md5($Passwort . $salt) == $Dbmd5Passwort) { ... }


    $salt holst du dir vorher aus der Datenbank. $Passwort muss schon als md5 beim Skript ankommen.

  • Ok erstmal danke für die Hilfestellung... so (oder so ähnlich) hatte ich es schonmal probiert..

    Ich habe das Skript inzwischen so umgeschrieben:

    Spoiler anzeigen

    Dennoch kommt immer der Wert 2 zurück... irgendwas scheint damit noch nicht hinzuhauen - hier sind jedoch meine PHP Kentnisse am Ende. Würdest Du mir noch ein letztes mal unter die Arme greifen?

    Mein AutoIT Smartphone GUI >>hier<<

    Der Mensch ist das einzige Tier, dass arbeiten muss.

  • in den root des Forums


    Aufruf über http://deinedomain.de/die_datei.php?…asswort_als_md5

  • Hm.... mir fällt grad noch ein - läßt sich das ganze noch ausweiten das er nicht nur username und pw überprüft sondern auch die secondary usergroup? es soll quasi so sein das der login nur möglich ist wenn nicht jeder forenuser sondern nur welche aus einer bestimmten gruppe darauf zugriff haben.

    Wär das mit diesem Skript realisierbar?

    Mein AutoIT Smartphone GUI >>hier<<

    Der Mensch ist das einzige Tier, dass arbeiten muss.

  • Na sicher geht das. DIe Benutzergruppe sollte man ja ebenfalls in der Tabelle 'user' finden. Also einfach den SELECT um ein Feld erweitern und eine 2te Bedingung an die Prüfung anhängen:

    PHP
    if (md5 ($password) . $query ['salt'] ) == $query ['password'] && $query['usergroupID'] == 5) {