Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 19

Thema: .htaccess passwörter mit PHP

  1. #1
    Registrierter Benutzer
    Registriert seit
    05.05.2006
    Beiträge
    46

    .htaccess passwörter mit PHP

    Ich habe ein loginsystem welches auf htaccess Dateien basiert. Jetzt soll der User aber sein Passwort ändern können. Ich habe mir deshalb ein Script programmiert welches Passwörter ändern kann. zur Zeit aber nur klartext passwörter.
    PHP-Code:
    <? 
    #/srv/vhost/backend/user-center/auth/.htusers
    if ($_SERVER['REQUEST_METHOD'] != 'POST') { 
    $cont.=<<<EOD
    <h3>Passwort ändern</h3>
    <form method="post"><table>
    <tr>
    <td>Altes Passwort:</td><td><input name="old_passwd"type="password"size="20"></td>
    </tr>
    <tr>
    <td>Neues Passwort:</td><td><input name="new1_passwd"type="password"size="20"></td>
    </tr>
    <tr>
    <td>Wiederhohlen:</td><td><input name="new2_passwd"type="password"size="20"></td>
    </tr>
    </table>
    <input value="Ändern" type="submit">
    </form>
    EOD;
     } else {

    $old_passwd=$_POST['old_passwd'];
    $new1_passwd=$_POST['new1_passwd'];
    $new2_passwd=$_POST['new2_passwd'];
    foreach (file('/srv/vhost/backend/user-center/auth/.htusers') as $this_user) {
    list($this_name, $this_passwd)=split(":", $this_user, 2);
    if($user==$this_name){
    $db_user=$this_name;
    $db_passwd=$this_passwd;
    }
    }
    if($db_user==""){
    $cont.=<<<EOD
    <blockquote><b>
    Username ist in der Datenbank nicht bekannt.<br/><br/>
    <a href="javascript:history.back()">Nochmal Versuchen</a></b>
    </blockquote>
    EOD;
    $ext=1;
    }
    if($db_passwd!=$old_passwd."\n"){
    $cont.=<<<EOD
    <blockquote><b>
    Das alte Passwort ist falsch.<br/><br/>
    <a href="javascript:history.back()">Nochmal Versuchen</a></b>
    </blockquote>
    EOD;
    $ext=1;
    }
    if($new2_passwd!=$new1_passwd){
    $cont.=<<<EOD
    <blockquote><b>
    Die neuen Kennwörter stimmen nicht überein.<br/><br/>
    <a href="javascript:history.back()">Nochmal Versuchen</a></b>
    </blockquote>
    EOD;
    $ext=1;
    }
    if(strlen($new1_passwd) < 4){
    $cont.=<<<EOD
    <blockquote><b>
    Das Kennwort ist zu kurz. Es muss mindestens 4 Zeichen haben.<br/><br/>
    <a href="javascript:history.back()">Nochmal Versuchen</a></b>
    </blockquote>
    EOD;
    $ext=1;
    }
    if($ext==0){
    foreach (file('/srv/vhost/backend/user-center/auth/.htusers') as $this_user) {
    list($this_name, $this_passwd)=split(":", $this_user, 2);
    if($db_user==$this_name){
    $new_file.=$this_name.":".$new1_passwd."\n";
    } else$new_file.=$this_user;
    }

    $handle = fopen ('/srv/vhost/backend/user-center/auth/.htusers', "w+");
    fwrite($handle, $new_file);
    fclose($handle);
    $cont.=<<<EOD
    <blockquote><b>
    Das Neue Kennwort wurde gesetzt.  <br/><br/>

    </blockquote>
    EOD;

    }
    }

    ?>
    (wundert euch nicht über das PHP Script. Es ist nur ein modul. Die Variable $cont wird dann über mein CMS in die website eingebaut.)
    Jetzt habe ich paar Probleme.
    1. User muss sein altes Passwort eingeben. Nur wie ver/entschlüssele ich es
    2. Wie verschlüssele ich passwörter nach dem .htaccess verfahren. zur Zeit verwende ich SelfHTML

  2. #2
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    Suche im php.net nach den Funktionen crypt und md5.

    so long,
    BlueJay
    Eigentlich ganz einfach, wenn man's weiss!

  3. #3
    Registrierter Benutzer
    Registriert seit
    05.05.2006
    Beiträge
    46
    ja crypt gibt mir nichts brauchbares aus. Außerdem werden immer verschiedene Zeichenketten gebildet, somit ist es für die rückwärts Abfrage ob das Passwort, welches der Kunde eingibt, richtig ist unbrauchbar.

    Ich hoffe auf weitere Vorschläge.

  4. #4
    Registrierter Benutzer
    Registriert seit
    08.07.2002
    Beiträge
    377
    md5 liefert immer die gleichen Hash-Werte zurueck.
    Amilo D - 2,8 Ghz - ATI Radeon 9000
    Debian GNU/Linux 3.1 (Sarge)

  5. #5
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Also Passwörter sollte man immer mit htpasswd Bearbeiten weil die Cryptographie und der gewählte Zeichensatz sich vom PHP-Client-Module zum Apache Server doch stark Unterschieden können.
    Wenn du PHP5 verwendest nehme oder siehe proc_open()
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  6. #6
    Registrierter Benutzer
    Registriert seit
    05.05.2006
    Beiträge
    46
    Zitat Zitat von nul Beitrag anzeigen
    md5 liefert immer die gleichen Hash-Werte zurueck.
    was soll ein md5 bringen? das hatt IMHO ja nichts mit der verschlüsselung von htpasswd zu tun.
    Zitat Zitat von undefined Beitrag anzeigen
    Also Passwörter sollte man immer mit htpasswd Bearbeiten weil die Cryptographie und der gewählte Zeichensatz sich vom PHP-Client-Module zum Apache Server doch stark Unterschieden können.
    Wenn du PHP5 verwendest nehme oder siehe proc_open()
    nein ich hänge noch an PHP4. ich ich will auch nicht eine Funktion starten, denn ich habe aus Sicherheitsgründen in der php.ini das Kommando proc_open aus gutem Grund gesperrt. Mir geht es auch um das authentifizieren der User. Ich weis nicht wie ich ein eingegebenes Passwort mit der einem sich dauernd ändernden, verschlüsselndem String vergleichen.

  7. #7
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    Zitat Zitat von undefined Beitrag anzeigen
    Also Passwörter sollte man immer mit htpasswd Bearbeiten weil die Cryptographie und der gewählte Zeichensatz sich vom PHP-Client-Module zum Apache Server doch stark Unterschieden können.
    Haben ein Gewehr

    Zumal man meist im besten Fall die Verschlüsselung des Clients bekommt, nicht die des Servers.

    Die meisten PW-Services arbeiten mit crypt oder md5 mit irgendwelchen Parametern, die da bei den Funktionen stehen. Eine Möglichkeit kommt meist hin.

    Und warum nicht mit dem alten PW einloggen vor der PW-Änderung? Erlegt alle Probleme.

    so long,
    BlueJay
    Eigentlich ganz einfach, wenn man's weiss!

  8. #8
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Zitat Zitat von BlueJay Beitrag anzeigen
    Haben ein Gewehr

    Zumal man meist im besten Fall die Verschlüsselung des Clients bekommt, nicht die des Servers.

    Die meisten PW-Services arbeiten mit crypt oder md5 mit irgendwelchen Parametern, die da bei den Funktionen stehen. Eine Möglichkeit kommt meist hin.

    Und warum nicht mit dem alten PW einloggen vor der PW-Änderung? Erlegt alle Probleme.

    so long,
    BlueJay
    Genauso schaut's aus - Der Cypher unterscheidet sich extrem!
    Daher habe ich damals als ich meine KDE Anwendung (siehe Signatur) geschrieben habe. Expect verwendet - damit man dieses Problem umgeht.
    Windows Client's können z.B. ohne cygwin kein Crypt aber alle Unix Systeme verwenden Standardmäßig diese Verschlüsselung.

    Ich würde bei einer PHP Authetifizierung auch nicht auf .htaccess Aufbauen.
    Dafür bietet PHP den header WWW-Authenticate mit den ENV's PHP_AUTH_USER und PHP_AUTH_PW.
    Diese kann man genauso gut aus einer Datenbank nehmen.
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  9. #9
    Registrierter Benutzer
    Registriert seit
    05.05.2006
    Beiträge
    46
    ok das entschlüsseln habe ich mir schon aus dem Kopf geschlagen. jetzt bitte die Funktion zum verschlüsseln?
    Ich würde bei einer PHP Authetifizierung auch nicht auf .htaccess Aufbauen.
    Dafür bietet PHP den header WWW-Authenticate mit den ENV's PHP_AUTH_USER und PHP_AUTH_PW.
    Diese kann man genauso gut aus einer Datenbank nehmen.
    ja blöd aber wenn man ein cgi-script sichern möchte, genauer awstats. und da bietet .htaccess die besten Möglichkeit.

  10. #10
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    Hast du hier alle genannten Varianten mit der .htusers durchgecheckt?

    http://de.php.net/manual/en/function.crypt.php
    Eigentlich ganz einfach, wenn man's weiss!

  11. #11
    Registrierter Benutzer
    Registriert seit
    05.05.2006
    Beiträge
    46
    was meinst du?
    welche .htusers?

  12. #12
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    na, die, aus der sich .htaccess bedienen soll...

    Näheres dazu bei SelfHTML
    Eigentlich ganz einfach, wenn man's weiss!

  13. #13
    Registrierter Benutzer
    Registriert seit
    05.05.2006
    Beiträge
    46
    achso bei mir heißt sie .htpasswd. Ich habe mich nur ein wenig gewundert. aber wie ich crypt anwenden muss weis ich immer noch nicht.

  14. #14
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    Beispiel 1 aus dem oben genannten Link
    Eigentlich ganz einfach, wenn man's weiss!

  15. #15
    Registrierter Benutzer
    Registriert seit
    05.05.2006
    Beiträge
    46
    PHP-Code:
    <?php
    $password 
    crypt('mypassword'); // let the salt be automatically generated

    /* You should pass the entire results of crypt() as the salt for comparing a
       password, to avoid problems when different hashing algorithms are used. (As
       it says above, standard DES-based password hashing uses a 2-character salt,
       but MD5-based hashing uses 12.) */
    if (== $password) {
       echo 
    "Password verified!";
    }
    ?>
    danke jetzt habe ich es. Nur wie ich ein neues passwort erstelle weis ich noch nicht
    mit
    PHP-Code:
    crypt($password$password
    ?

Lesezeichen

Berechtigungen

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