Ergebnis 1 bis 19 von 19

Thema: Frontendpassworter mit Backendpasswortern Syncronisieren

  1. #1
    Contao-Nutzer Avatar von TheGeek
    Registriert seit
    21.06.2009.
    Beiträge
    97

    Beitrag Frontendpassworter mit Backendpasswortern Syncronisieren

    Hallo Typolight Community,

    Auch auf die Gefahr hin das jetzt die Sicherheitsfanatiker unter uns groß aufschreien. Hier mal ein Script welches man mit der Cron Erweiterung aufrufen kann. (zb alle 3 Minuten) Grund für die Erstellung des Scriptes war das mich die User immer nach ihrem Backend Passwort gefragt haben *nerf* ... nun können sie entweder durch die Passwort vergessen Funkion oder durch die Passwort ändern Funkion ihr Backendpasswort neu setzen.

    PHP-Code:
    <?

    /* 

    Created by TheGeek in October 2009

    Dieses Script Syncronisiert die Frontendpassworter mit den Backendpasswortern.
    Das heißt das man ab sofort sein Backendpasswort im Frontend ändern kann.
    Das Script wird via Cron Erweiterung zb alle drei Minuten aufgerufen.

    */


    // Auf die Datenbank verbinden
    $mysqlhost = '##mysqlserver##';
    $mysqluser = '##datenbankuser##';
    $mysqlpwd  = '##datenbankpasswort';
    $mysqldb   = '##datenbankname##';
    $connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die("Verbindungsversuch fehlgeschlagen");
    mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");


    // Abfrage der Frondend daten
    $abfrage_FE = "SELECT * FROM tl_member";
    $ergebnis_FE = mysql_query($abfrage_FE);
    while($row = mysql_fetch_object($ergebnis_FE))
     {
      // Frontend Daten auslesen
      $FE_UserName = $row->lastname;
      $FE_UserPassword = $row->password;
      $FE_eMail = $row->email;

      // Backend Daten Updaten
      $up_abfrage = "UPDATE tl_user SET password = '".$FE_UserPassword."' WHERE email = '".$FE_eMail."' AND username = '".$FE_UserName."'";
      $up_ergebnis = mysql_query($up_abfrage);
     } 

    ?>
    Geändert von TheGeek (13.10.2009 um 09:40 Uhr)
    Life would be easier if I had the source code!

  2. #2
    Contao-Urgestein Avatar von FloB
    Registriert seit
    19.06.2009.
    Ort
    Sonnensystem
    Beiträge
    1.618

    Standard

    Du musst das ganze nicht über einen nervigen Cronjob lösen – viel flexibler geht das ganze über eine kleine TL-Erweiterung, die bei dem entsprechenden Field-save_callback eine Sync-Funktion aufruft.
    So long,
    FloB since Nov. 2007 +706P +115P and counting

  3. #3
    Contao-Nutzer Avatar von TheGeek
    Registriert seit
    21.06.2009.
    Beiträge
    97

    Standard

    Genau das wäre natürlich viel sinnvoller. Hast du zufällig ein Beispiel parat?
    Life would be easier if I had the source code!

  4. #4
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Siehe system/modules/backend/dca/tl_user.php
    PHP-Code:
            'password' => array
            (
                
    'label'                   => &$GLOBALS['TL_LANG']['MSC']['password'],
                
    'exclude'                 => true,
                
    'inputType'               => 'password',
                
    'eval'                    => array('mandatory'=>true'rgxp'=>'extnd''minlength'=>8),
                
    'save_callback' => array
                (
            array(
    'MeineKlasse''MeineMethode')
          )
            ), 
    PHP-Code:
    class MeineKlasse extends Backend
    {
        public function 
    MeineMethode()
        {
        
    // mach dies, mach das...und zwar jedes Mal, wenn gespeichert wird.
        
    }

    Hoffe das hilft weiter
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  5. #5
    Contao-Nutzer Avatar von TheGeek
    Registriert seit
    21.06.2009.
    Beiträge
    97

    Lachendes Gesicht

    Ich habe mal eine kleine Erweiterung geschrieben und diese in der Erweiterungsliste auf Typolight.org veröffentlicht. Die Erweiterung heißt "PasswordSync".
    Life would be easier if I had the source code!

  6. #6
    Administrator Avatar von Nina
    Registriert seit
    04.06.2009.
    Ort
    Hamburg
    Beiträge
    4.755
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Da bin ich jetzt wirklich gespannt

  7. #7
    Alter Contao-Hase
    Registriert seit
    06.07.2009.
    Beiträge
    1.493

    Standard

    Liegt das gute ding noch zur Prüfung?

  8. #8
    Administrator Avatar von Nina
    Registriert seit
    04.06.2009.
    Ort
    Hamburg
    Beiträge
    4.755
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von TheGeek Beitrag anzeigen
    Ich habe mal eine kleine Erweiterung geschrieben und diese in der Erweiterungsliste auf Typolight.org veröffentlicht. Die Erweiterung heißt "PasswordSync".
    Hm, in der Erweiterungsliste habe ich es jetzt nicht gefunden? Ist das nicht mehr da?

    Oder ist das jetzt diese Extension "usersync"?

  9. #9
    Contao-Nutzer Avatar von cgpro
    Registriert seit
    01.07.2009.
    Ort
    München
    Beiträge
    218
    Partner-ID
    11108
    User beschenken
    Wunschliste

    Standard

    usersync ist leider etwas spärlich dokumentiert... rein vom aufbau ist das mit dem cronjob nicht optimal. wenn im backend jemand sein passwort ändernt sollte dies zeitgleich im frontend aktuell sein. so muss immer erst der cronjob drüber damit das up2date ist

    für normale redakteure ist das eh äußerst unlogisch, trennung von frontend und backend-usern. arbeite gerade an einer intranetpage wo dies der fall ist.

  10. #10
    Contao-Nutzer Avatar von TheGeek
    Registriert seit
    21.06.2009.
    Beiträge
    97

    Standard

    Sorry Leute ich hatte vergessen die Sprache zu veröffentlichen Naja beim nächsten mal weiß ich Bescheid https://contao.org/erweiterungsliste...000009.de.html

    Viel Spaß damit und sagt mir einfach beschied wenn was verbessert werden muss.
    Geändert von TheGeek (16.03.2010 um 14:13 Uhr)
    Life would be easier if I had the source code!

  11. #11
    Contao-Fan Avatar von acenes
    Registriert seit
    13.06.2009.
    Beiträge
    407

    Standard

    Zitat Zitat von TheGeek Beitrag anzeigen
    Mhh komisch eigentlich müsste es da sein. Meine andere Erweiterung "LanParty" hat ja auch ein bisschen gedauert...
    Da kannst du ewig warten.

    Solange nicht mindestens eine Sprache hinzugefügt und veröffenlicht wird bleibt es duster.
    Erweiterungen: avatar, cron, dlstats, editarea, geshi, helpdesk, recall, rep_*, smhcheck.
    (Bitte keine Supportanfragen per PM oder E-Mail)

  12. #12
    Alter Contao-Hase
    Registriert seit
    06.07.2009.
    Beiträge
    1.493

    Standard

    Ist es dann möglich, dass der Frontenduser sich nicht erst im Backend einloggen muss sondern gleich eingeloggt ist, wenn er sich im Frontend einloggt?

  13. #13
    Administrator Avatar von Nina
    Registriert seit
    04.06.2009.
    Ort
    Hamburg
    Beiträge
    4.755
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Kann mir einer den technischen Unterschied zwischen diesen beiden Erweiterungen erklären? Beide gleichen anscheinend das Passwort von Frontend-Mitgliedern und Backend-Benutzern ab.

    PasswordSync
    usersync

  14. #14
    Community-Moderator Avatar von schman
    Registriert seit
    19.06.2009.
    Ort
    Dornbirn
    Beiträge
    3.739
    User beschenken
    Wunschliste

    Standard

    Ich hab das Skript gerade mal kurz angeschaut, wäre es hier nicht von Vorteil wenn die SQL Abfragen per TL Framework durchgeführt werden.

    Ich denke die Umstellung hier würde auch nicht lange dauern, da das Skript nicht das umfangreichste ist.

  15. #15
    Contao-Nutzer Avatar von TheGeek
    Registriert seit
    21.06.2009.
    Beiträge
    97

    Standard

    Ich hab das Skript gerade mal kurz angeschaut, wäre es hier nicht von Vorteil wenn die SQL Abfragen per TL Framework durchgeführt werden.
    Klar da stimme ich dir zu. In der nächsten Version wird alles besser :P
    Life would be easier if I had the source code!

  16. #16
    Contao-Fan Avatar von deerwood
    Registriert seit
    24.11.2009.
    Ort
    Hamburg
    Beiträge
    344

    Standard

    Moin Nina, TheGeek, alle,

    Zitat Zitat von Nina Beitrag anzeigen
    Kann mir einer den technischen Unterschied zwischen diesen beiden Erweiterungen erklären? Beide gleichen anscheinend das Passwort von Frontend-Mitgliedern und Backend-Benutzern ab.

    PasswordSync
    usersync
    Der erste wesentliche Unterschied ist, dass [usersync] immer Backend-User ==> Frontend-Member arbeitet, während [PasswordSync] genau anders herum, von Frontend-Member zu Backend-User, arbeitet.

    Der zweite Unterschied:

    [userync] synchronisiert VIEL mehr als das Passwort und scheint eine ziemlich genaue Steuerung zu erlauben, was und wer synchronisiert werden soll. Das reicht durchaus bis dahin, dass Frontend-Member via Löschung des korresponierenden Backend-Users gelöscht werden (z.B. wenn sie böses tun). Aber eben nur dann, wenn die Beziehung zwischen User X zu Member Y zuvor explizit eingerichtet wurde (von einem Admin?). [usersync] erscheint mir auf Anhieb (ohne dass ich allen Code analysiert hätte) sowohl von der Konzeption wie auch von der Umsetzung recht ausgereift.

    [PasswordSync] gleicht nur Passworte ab, das aber gnadenlos für alle und jeden/s Benutzer/Mitglied, sobald auch nur ein Frontend-Mitglied sein Passwort ändert. Sorry, TheGeek, das sagen zu müssen, aber das ist fast sträflicher Anfängercode, der so nicht im Repository verbleiben sollte.

    Hier mal zwei Szenarien:

    20% der Mitglieder/Benutzer sind "doof" und vergessen ihr Passwort im Backend laufend, 80% sind normal und sorgen deshalb dafür, dass sie im Backend (das ja typisch VIEL mehr erlaubt, als das Frontend) ein anderes Passwort haben. Den 80% wird ihr sorgfältig gewähltes Backend-Passwort übergebügelt, sobald ein DAU mal wieder sein Passwort vergessen/geändert hat. Und überhaupt: was für ein Konzept, das Synchronisieren an Benutzername und email festzumachen, statt an (sorgfältig manuell gepflegten Id's von User vs. Member)! Das führt zu Scenario 2:

    Angenommen, 100% der Frontend-Mitglieder hätten auch einen Backend-Benutzer mit gleichem Namen und email. ABER im Backend gäbe es auch einige Admins, die es im Frontend nicht gibt. Dann könnte, mindestens bei Auto-Registration, ein Angreifer diverse neue Frontend-Zugänge einrichten und dabei oft leicht via "good guess" sowohl den Namen wie auch die email erraten und sich damit Zugang zum Backend als Admin verschaffen.

    Würde man nur die DAU's auch unter gleichem Namen/email im Backend führen und den normalen Menschen erlauben, sich im Backend unter anderen Zugangsdaten einzurichten, würde die Situation SCHLIMMER statt besser, weil es nun viel mehr potentielle Angriffs-Punkte gäbe.

    Das komplette Überbügeln aller Passworte könnte man leicht verhindern, wenn die Parameter des HOOKS 'setNewPassword' (kompletter Member-Datensatz, neues Passwort) benutzt würde, außerdem MUSS verhindert werden, dass Admin-Backend-Accounts aus dem Frontend verändert werden! Admins, die Ihr Passwort vergessen, sind keine Admins!

    Aber mir erscheint das Konzept Frontend ==> Backend (bezüglich Security/Anmeldedaten) grundsätzlich falsch.

    Ich beantrage die Löschung dieser Erweiterung aus dem Repository, bis zumindest die Minimal-Anforderungen umgesetzt sind.

    LG, Georg

  17. #17
    Contao-Fan Avatar von acenes
    Registriert seit
    13.06.2009.
    Beiträge
    407

    Standard

    Ich muss Georg recht geben, die Erweiterung ist im momentanen Zustand ein Sicherheitsrisiko. Nebst den von Georg angesprochenen Punkten solltest du dich auch über "SQL Injection" schlau machen.

    Ich habe die Veröffentlichung der Release deshalb rückgängig gemacht damit niemand zu Schaden kommt so lange das nicht gelöst ist, ich denke das ist auch in deinem Sinne TheGeek.

    Problematisch ist in diesem Falle auch dass die allererste Version bereits als 1.0.0 stable angelegt wurde. Das signalisiert den potenziellen Benutzern fälschlicherweise dass es sich hier um eine ausgereifte Erweiterung handelt. 0.0.1 alpha1 wäre wohl in einem solchen Fall angemessener.
    Geändert von acenes (17.03.2010 um 06:34 Uhr)
    Erweiterungen: avatar, cron, dlstats, editarea, geshi, helpdesk, recall, rep_*, smhcheck.
    (Bitte keine Supportanfragen per PM oder E-Mail)

  18. #18
    Contao-Nutzer Avatar von TheGeek
    Registriert seit
    21.06.2009.
    Beiträge
    97

    Standard

    Gut ich gebe euch komplett recht. Für mich hat diese kleine Erweiterung ausgereicht, jedoch für die breite Masse ist sie aus oben genannten Punkten einfach zu unsicher und nicht geeignet. Ich werde die Erweiterung überarbeiten. Insbesondere die Punkte mit der SQL Abfrage und das alle User beim ändern eines Passwortes abgeglichen werden sind eher suboptimale Verhaltensweisen.
    Life would be easier if I had the source code!

  19. #19
    Administrator Avatar von Nina
    Registriert seit
    04.06.2009.
    Ort
    Hamburg
    Beiträge
    4.755
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Danke Jungs, dass ihr da einen Blick drauf habt. Bei so sicherheitsrelevanten Extensions ist es immer gut, wenn man sich in der Community hilft

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •