htaccess und Passwortschutz

tobi4

Member
Hallo,

nach einem Serverumzug mit neuer PHP-Version funktionieren meine via Plesk angelegten Logins für geschützte Verzeichnisse (sind knapp 1000 User) nur noch teilweise. Soweit ich sehe, verwendet mein Server diese Methode: CRYPT_BLOWFISH und hier steht in diesem Zusammenhang dass das wohl nicht in allen PHP-Versionen gleich funktioniert.

Schöner Mist, bei knapp 1000 Usern manuell angelegt.
Daher möchte ich diese nun nicht mehr per Plesk anlegen sondern manuell in einer htaccess Datei.

Da man dort nicht die Passwörter so angeben kann, habe ich mir dies hier erstellt, um meine Passwörter zu generieren:

PHP:
<?php
if ($_POST['getpw']) {
$pw_rein = $_POST['get'];
$password = crypt($pw_rein);
echo $password;
}
?>

<form action="getpw.php" method="POST">
<p><input type="TEXT" name="get" value="<?=$pw_rein?>" size="20"> <input type="SUBMIT" name="getpw" value="Get PW"></p>
</form>

Ein erstelltes PW sieht dann folgendermaßen aus: $1$CFov3uCk$HxWv58VymK29ZrFKPkuKV.
Was ich nicht verstehe, ich dachte, dass man keine Passwörter mit z.B. "#" als Inhalt erstellen kann und crypt() dann abbrechen würde, tut es aber nicht???

Ist das so ok? Kann ich mich darauf verlassen und damit meine PWs erstellen?

Danke & Gruß
 
Wenn dein neuer Server eine ältere Version von PHP verwendet als der alte, kann es zu Problemen kommen. Ist die Version neuer, gibt es keine Probleme. MIt PHP 5.3.7 (die ist ja auch schon älter) wurden zusätzliche Prefixe für CRYPT_BLOWFISH eingeführt, aber ältere werden dadurch nicht ungültig.
Nach deinem Beispiel wird nun ein MD5-Hash erzeugt. Der ist zwar sehr portabel, aber wenn der Hash bekannt wird, mit vergleichsweise wenig Aufwand wieder das Klartext-Passwort ermittelbar. Seit PHP 5.3 hat PHP eigene Hash-Algorithmen und greift nicht mehr auf die vom System bereitgestellten Methoden zurück - dadurch kann es passieren, daß von PHP erzeugte Hashes z.B. nicht in einer htacces-Datei funktionieren, wenn du crypt() nicht mitteilst, welchen Algoritmus es verwenden soll.
 
Ich kann mir dann aber nicht erklären, weshalb nur noch einige meiner Passwörter funktionieren. Ich habe die Datei (von Plesk angelegt) unter /var/www/vhosts/domain.de/pd/geschütztes_verzeichnis angesehen und anhand eines Backups festgestellt dass diesmal keine Passwörter verändert wurden. Dennoch klappen einige Logins nicht mehr. Ich hatte auch schon das Problem, dass Plesk, durch Änderung der geschützten Verzeichniseinstellungen wie bspw. des Titels in der Pleskbenutzeroberfläche, die Passwortdatei "versaut" hat, da waren dann teilweise mehrere Benutzernamen mit dem gleichen verschlüsselten PW versehen (habe das auch hier damals gepostet).
Dies ist nun nicht so, die PWs sind nicht verändert worden, dennoch funktionieren einige Logins nicht mehr (habe es stichprobenartig selbst getestet).

Alte PHP-Version: 5.1.6
Neue PHP-Version: 5.3.3

Ich finde im Netz recht wenig Informationen dazu, welche Verschlüsselungsmethode ich nun verwenden soll. Wenn ich nur crypt() ohne andere Angabe verwende, wird ein verschl. PW erstellt, so wie es bei meinen Plesk Einträgen auch immer erstellt wurde (gleiches Schema, siehe mein erster Beitrag).
Soll ich dennoch angeben, welche Methode verwendet werden soll? Und wie mache ich das (erstmal nur bei der Datei, womit ich meine PWs erstellen will). Und wie teile ich dem entsprechenden htaccess file mit den usernames mit, wie es damit umgehen soll?

Was soll ich denn jetzt machen?
 
Und wie teile ich dem entsprechenden htaccess file mit den usernames mit, wie es damit umgehen soll?

Gar nicht. Anhand des Hashes wird sowohl der verwendet Algorithmus (z.B. MD5, DES oder Blowfish) als auch der Salt erkannt. Welche Methode crypt() verwendet, legst du fest, indem du einen entsprechenden Salt erzeugst, der den Anforderungen der jeweiligen Algorithmus entspricht (ist ja auf der von dir verlinkten Seiten beschrieben). Wenn kein Salt angegeben ist, versucht PHP erst einen MD5-Salt zu erzeugen und macht dann einen Fallback auf DES.
 
Ich habe nun gelesen, dass MD5 mit $1$ beginnt und einen zufälligen Salt erzeugt. Das ist bei mir wohl so der Fall (aktuell mit diesem Script und auch Plesk hat es so gemacht).

Ich werde nun alle Usernamen manuell überprüfen und nicht mehr funktionierende Logins korrigieren.

Vielleicht kann mir noch jemand sagen, wodurch dieses Problem verursacht worden sein kann und was ich tun kann, damit es in Zukunft nicht mehr passiert.

Danke & Gruß
 
Back
Top