Ark: .htusers Datei passwörter verschlüsseln mit Perl

hiho

Habe derzeit folgenden Passwortschutz mit .htaccess

AuthType Basic
AuthName 'Please authorize'
AuthUserFile /home/ark/.htpasswd
order deny,allow
allow from all
require valid-user

die .htpasswd Datei enthält diese Zeile:

user:pauONM/HSu9pM

Damit kann ich mich mit user/pass erfolgreich einloggen.

Interessant ist:
Auf http://webmaster.gulli.com/tools/htaccessgenerator.html
wurde mir oben genanntes user:pauONM/HSu9pM  ausgegegeben,
als ich dort angab mich mit  user/pass einloggen zu wollen.

Selfhtml sagt  "pass"  ist verschlüsselt für Apache  0p3A2aYbTPqXw also:
user:0p3A2aYbTPqXw

1. Frage
Die Werte  "pauONM/HSu9pM" (gulli)  und  "0p3A2aYbTPqXw" (selfhtml)
haben absolut keine Ähnlichkeit miteinander,
und dennoch funktionieren beide mit Passwort "pass".

Wie können beide mit "pass" als Passwort funktionieren,
wenn beide komplett unterschiedlich aussehen??

2. Frage
Mit welcher Funktion in Perl muss ich das verschlüsseln?
Ein Perl-Script soll das Passwort erstellen und in der .htpasswd
abspeichern, damit eingeloggte User selber ihre Passwörter ändern können.

Nach welchem verfahren muss ich das Passwort herstellen in Perl?

Angeblich ist es bei Apache 1.3 und Apache 2.x komplett anders
hergestellt das Passwort.

Dangge :P
  Ark

  1. hiho

    Schreckensmeldung:

    Selfhtml bring jedesmal ein neues Passwort als verschlüsselung
    für das Wort "pass" heraus!!

    http://aktuell.de.selfhtml.org/cgi-bin/cryptform.pl?password=pass
    (Bitte reload drücken)

    Warum ist das jedesmal ein anderes Passwort und immer "pass" ??

    Drüber steht es würde mit crypt gemacht.
    Ist aber glaub ich ein anderes crypt als in Perl?

    Apache 2.x verwendet aber was anderes, ne?

    Dangge :P
      Ark

    1. 你好 Ark,

      Selfhtml bring jedesmal ein neues Passwort als verschlüsselung
      für das Wort "pass" heraus!!

      http://aktuell.de.selfhtml.org/cgi-bin/cryptform.pl?password=pass
      (Bitte reload drücken)

      Warum ist das jedesmal ein anderes Passwort und immer "pass" ??

      Weil der Salt zufaellig ist... ;-)

      Drüber steht es würde mit crypt gemacht.
      Ist aber glaub ich ein anderes crypt als in Perl?

      Nein, es ist dasselbe.

      Apache 2.x verwendet aber was anderes, ne?

      Nein.

      再见,
       CK

      --
      Sei ε kleiner Null.
      http://wwwtech.de/
  2. 你好 Ark,

    1. Frage
      Die Werte  "pauONM/HSu9pM" (gulli)  und  "0p3A2aYbTPqXw" (selfhtml)
      haben absolut keine Ähnlichkeit miteinander,
      und dennoch funktionieren beide mit Passwort "pass".

    Wie können beide mit "pass" als Passwort funktionieren,
    wenn beide komplett unterschiedlich aussehen??

    Weil es keine Verschluesselung, sondern nur eine Pruefsummenberechnung
    ist. Dabei ist eine zufaellige Komponente dabei, Salt genannt. Dieser wird
    in den ersten zwei Byte (Buchstaben in diesem Fall) der Pruefsumme
    gespeichert. Benutzt du immer denselben Salt, bekommst du auch immer
    dasselbe Ergebnis. Benutzt du unterschiedliche Salts, bekommst du auch
    unterschiedliche Ergebnisse... ;-)

    1. Frage
      Mit welcher Funktion in Perl muss ich das verschlüsseln?

    crypt() heist die Funktion.

    Ein Perl-Script soll das Passwort erstellen und in der .htpasswd
    abspeichern, damit eingeloggte User selber ihre Passwörter ändern können.

    In dem Fall wuerde ich zur Authentifizierung lieber ein Modul wie
    mod_auth_mysql oder mod_auth_db benutzen, also Datenbank-Module, damit
    ist a) der Zugriff schneller und b) der Zugriff einfacher, du musst dann
    nicht jedesmal die Datei neu parsen.

    Nach welchem verfahren muss ich das Passwort herstellen in Perl?

    Angeblich ist es bei Apache 1.3 und Apache 2.x komplett anders
    hergestellt das Passwort.

    Nein, da hat sich nichts geaendert.

    再见,
     CK

    --
    Death is God's way of telling you not to be such a wise guy.
    http://wwwtech.de/
    1. hiho Christian

      Deine Antwort war sehr hilfreich, dankschön!

      In dem Fall wuerde ich zur Authentifizierung lieber ein Modul wie
      mod_auth_mysql oder mod_auth_db benutzen, also Datenbank-Module, damit
      ist a) der Zugriff schneller und b) der Zugriff einfacher, du musst dann
      nicht jedesmal die Datei neu parsen.

      Geht das denn mit der .htaccess ganz normal?
      Ich fand immer nur infos wie ich mit .htaccess und .htpasswd bzw. .htgroups
      arbeite, aber dass man statt der passwortdatei eine Datenbank
      verwenden kann ist mir neu.  (Oder verstand ich Dich da falsch?)

      Wo gibt es infos dazu?
      Wird das per default unterstützt?
      Geht das mit Apache  1.x und 2.x ?
      Wo gibts ein Tutorial bitte?

      Dangge! :P
        Ark

      1. hi,

        In dem Fall wuerde ich zur Authentifizierung lieber ein Modul wie
        mod_auth_mysql oder mod_auth_db benutzen

        Wo gibt es infos dazu?

        http://httpd.apache.org/docs/mod/index.html

        gruß,
        wahsaga

        --
        "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
      2. 你好 Ark,

        In dem Fall wuerde ich zur Authentifizierung lieber ein Modul wie
        mod_auth_mysql oder mod_auth_db benutzen, also Datenbank-Module, damit
        ist a) der Zugriff schneller und b) der Zugriff einfacher, du musst dann
        nicht jedesmal die Datei neu parsen.

        Geht das denn mit der .htaccess ganz normal?

        Jo, klar. Du musst nur einige Direktiven auswechseln (im Fall mod_auth_db:
        AuthDBUserFile statt AuthUserFile, AuthDBGroupFile statt AuthGroupFile)

        Wo gibt es infos dazu?

        In der Apache-Doku, die hatte Wahsaga ja schon verlinkt :)

        Wird das per default unterstützt?

        mod_auth_db und mod_auth_dbm sind per Default dabei und aktiviert,
        mod_auth_mysql muesstest du erst installieren.

        Geht das mit Apache  1.x und 2.x ?

        Ja.

        Wo gibts ein Tutorial bitte?

        Keine Ahnung? ;-)

        再见,
         CK

        --
        To define recursion, we must first define recursion.
        http://wwwtech.de/
        1. hiho CK

          mod_auth_db und mod_auth_dbm sind per Default dabei und aktiviert,
          mod_auth_mysql muesstest du erst installieren.

          Wenn das Modul für MySQL nicht per default dabei ist,
          bringt mir wahrscheinlich das ganze default-zeugs auch nichts,
          weil mein webspace auf einem shared host ist
          und ich nichts installieren kann dort.

          Sehe ich das richtig oder kann ich allein mit den default sachen auch was anfangen?

          Dangge!
           Ark

          1. 你好 Ark,

            mod_auth_db und mod_auth_dbm sind per Default dabei und aktiviert,
            mod_auth_mysql muesstest du erst installieren.

            Wenn das Modul für MySQL nicht per default dabei ist,
            bringt mir wahrscheinlich das ganze default-zeugs auch nichts,
            weil mein webspace auf einem shared host ist
            und ich nichts installieren kann dort.

            Was ist denn das fuer eine Begruendung? ;-)

            Sehe ich das richtig oder kann ich allein mit den default sachen auch
            was anfangen?

            Ja, klar -- Datenbanksysteme sind nicht immer Server-Client-basiert.
            mod_auth_db benutzt das BerkeleyDB-DBMS, das auf Datei-Basis arbeitet.

            再见,
             CK

            --
            Der Verstand ist der Hausherr, der Koerper sein Gast.
            http://wwwtech.de/
  3. hi,

    1. Frage
      Die Werte  "pauONM/HSu9pM" (gulli)  und  "0p3A2aYbTPqXw" (selfhtml)
      haben absolut keine Ähnlichkeit miteinander,
      und dennoch funktionieren beide mit Passwort "pass".

    Wie können beide mit "pass" als Passwort funktionieren,
    wenn beide komplett unterschiedlich aussehen??

    die ersten beiden zeichen sind das "salz in der suppe" ...

    der verwendete verschlüsselungs-algorithmus bekommt ein sog. salt-argument übergeben, eben die ersten zwei zeichen. werden diese anders gewählt, ändert sich auch das verschlüsselungsergebnis.

    da dieses salt mit in deiner .htpasswd-datei drin steht, weiß der server auch, dass er das vom client übergebene passwort wieder mit dem gleichen salt-argument verschlüsseln muss, um vergleichen zu können.

    gruß,
    wahsaga

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
  4. Moin.

    1. Frage
      Die Werte  "pauONM/HSu9pM" (gulli)  und  "0p3A2aYbTPqXw" (selfhtml)
      haben absolut keine Ähnlichkeit miteinander,
      und dennoch funktionieren beide mit Passwort "pass".

    Wie können beide mit "pass" als Passwort funktionieren,
    wenn beide komplett unterschiedlich aussehen??

    Die Antwort findest Du  im Archiv: Das "Salz in der Suppe" beim crypt-Befehl und Frage zu crypt() und dem "Salz in der Suppe"

    1. Frage
      Mit welcher Funktion in Perl muss ich das verschlüsseln?

    Und auch diese Antwort findest Du in den beiden o.g. Beiträgen.

    Schönen Tag,
    Gruß Frank