• 18.08.2025, 23:24
  • S’inscrire
  • Connexion
  • Vous n’êtes pas connecté.

 

Martin666

God

PHP: *update* sha1() und Bugs

jeudi 2 novembre 2006, 11:10

Moinmoin!

ich versuche grade ohne PHP-Kenntnisse (!) sowas wie eine .htaccess-Passworterstellung wie hierin eine Homepage zu integrieren.

Dazu hab ich in den weiten des Netzes nix gar zu passendes gefunden. mit ein bissi Aufwand könnt ich mir das auch noch selber zusammenpuzzeln. Da ist aber immer noch die Frage, wie genau das Passwort verschlüsselt wird:

Code source

1
string crypt(string str [, string salt])


wobei salt eine zusätzliche verpuzzelung darstellt.
hab das in irgendeinem script gesehn, dass str = User und salt = Passwort war. woanders war str das passwort und es gab keine salt angabe. Was is denn nu richtig? Sicherer könnte ich mir ersteres vorstellen.
Oder erbarmt sich jemand und schreibt mir das mit den Eingabefeldern und so schnell hin? *blingbling-liebguck*
Kyros > Radeon 5750 > Radi AMS 420 > aqualis > Laing DDC

Eikman

Moderator

Re: PHP: crypt() für .htaccess

jeudi 2 novembre 2006, 11:12

md5() benutzen :)

oder noch besser

sha1()

Martin666

God

Re: PHP: crypt() für .htaccess

jeudi 2 novembre 2006, 11:16

wtf()
und
rofl()
???

Mensch Eike, weisst doch dass ich nich sooo die Ahnung hab, nu sei mal nich so unpräzise^^
Kyros > Radeon 5750 > Radi AMS 420 > aqualis > Laing DDC

Eikman

Moderator

Re: PHP: crypt() für .htaccess

jeudi 2 novembre 2006, 11:37

sha1("wudelstinkt") gibt dir einen string wieder den du als passwort getrost abspeichern kannst. nun kannst du eingegebene passwörter einfach damit vergleichen ($gespeichertes passwort === sha1($_POST["password"])) und fertig.


mehr dazu:

http://de.php.net/manual/de/function.sha1.php
http://de.wikipedia.org/wiki/SHA-1

Y0Gi

God

Re: PHP: crypt() für .htaccess

jeudi 2 novembre 2006, 12:29

Crypt hasht Strings "one-way", d.h. nicht umkehrbar. Der Salt ist eine Art Initialisierungsvektor, kann weggelassen werden bzw. wird ansonsten der erste Teil des Strings verwendet. Oder so.

Martin666

God

Re: PHP: crypt() für .htaccess

jeudi 2 novembre 2006, 12:36

Ich bin verwirrt. Ist es also wurscht welche Funktion ich nehme?
Also mit der ganzen Chose hab ich vor, hier auf der Firmenwebseite eben jene Funktion nachzubilden, die in dem Link zu sehen ist. Damit sollen sich Kunden ein login im schema Fear:$1$Cf0T69xu$fzGjxYPg6WuOVFK8QZjCn/ erstellen können, was sie selbstständig in die .htaccess einfügen.

ich frage wie crypt() funzt und du sagst ich soll sha1() nehmen. Warum? blick da anscheinend an der ganzen Verschlüsselungsthematik nich dran lang...

merkt der webserver am hash-wert, welche verschlüsselungstechnik verwendet wurde?
Kyros > Radeon 5750 > Radi AMS 420 > aqualis > Laing DDC

hurra

God

Re: PHP: crypt() für .htaccess

jeudi 2 novembre 2006, 12:41

Citation de "Wudel"

merkt der webserver am hash-wert, welche verschlüsselungstechnik verwendet wurde?


Nein. Musst halt schaun, was .htaccess(htpasswd?) da verwendet.

Martin666

God

Re: PHP: crypt() für .htaccess

jeudi 2 novembre 2006, 12:50

meinst das "AuthType Basic", was in der .htaccess steht?

Ansonsten steht da ein AuthName, wo die .htpasswd-datei zu finden ist und noch Require Valid-User.

und ja sorry, natürlich meinte ich die .htpasswd für die passwörter
Kyros > Radeon 5750 > Radi AMS 420 > aqualis > Laing DDC

hurra

God

Re: PHP: crypt() für .htaccess

jeudi 2 novembre 2006, 12:54

Citation de "Wudel"

meinst das "AuthType Basic", was in der .htaccess steht?

Ansonsten steht da ein AuthName, wo die .htpasswd-datei zu finden ist und noch Require Valid-User.

und ja sorry, natürlich meinte ich die .htpasswd für die passwörter



Nein,

das hier:

Citation

htpasswd encrypts passwords using either a version of MD5
modified for Apache, or the system's crypt() routine. Files
managed by htpasswd may contain both types of passwords;
some user records may have MD5-encrypted passwords while
others in the same file may have passwords encrypted with
crypt().

Y0Gi

God

Re: PHP: crypt() für .htaccess

jeudi 2 novembre 2006, 12:58

htpasswd ist auch ein Kommandozeilenprogramm, um solche Passwort-Hashes als auch gleich eine .htpasswd-Datei zu erstellen. Neben crypt unterstützt es eben auch MD5 und SHA1.

Martin666

God

Re: PHP: crypt() für .htaccess

jeudi 2 novembre 2006, 14:16

hab nur nen tollen erklärenden Link gefunden:

http://forum.de.selfhtml.org/archiv/2005/5/t108606/

ts ts, schämt euch ;)
Kyros > Radeon 5750 > Radi AMS 420 > aqualis > Laing DDC

Y0Gi

God

Re: PHP: crypt() für .htaccess

jeudi 2 novembre 2006, 14:28

Ich seh da nix wichtiges, was hier nicht auch steht.

Eikman

Moderator

Re: PHP: crypt() für .htaccess

jeudi 2 novembre 2006, 14:45

Und immer brav SHA-1 benutzen, denn im Gegensatz zu MD5 ist es noch nicht kompromittiert.

Y0Gi

God

Re: PHP: crypt() für .htaccess

jeudi 2 novembre 2006, 15:31

Es gibt Angriffe für SHA-1, die den Aufwand zum Finden von Kollisionen schon drastisch senken, auch wenn es für momentane Verhältnisse noch sehr viel Aufwand ist, der bleibt.

Man sollte aber auch nicht vergessen, dass es unlängst umfangreiche Rainbow-Tables für beide Hash-Verfahren gibt.

Martin666

God

Re: PHP: crypt() für .htaccess

vendredi 3 novembre 2006, 15:27

So Freunde der seichten Unterhaltung, habe heut nu mal bissi gebastelt...

Code source

1
2
3
4
5
6
<?php
      $krypto = sha1($pass);
      //$name = $user;
            echo "Die in die .htpasswd-Datei einzufügende Zeile lautet:<br>";
            echo "$user:$krypto<br>";
?>


Das Formular dazu hab ich hier. Wer über meine HP lacht wird erschossen ;)

nur leider tut das script nicht das was es soll. erstens zeigt es den usernamen nicht an, und zweitens scheint er hier bei mir auch das ausgegebene und verschlüsselte passwort nicht zu ändern, dachte das beginnt immer mit den ersten beiden buchstaben des eingebenen passworts.
Wo hab ich den Fehler gemacht?
Kyros > Radeon 5750 > Radi AMS 420 > aqualis > Laing DDC

Y0Gi

God

Re: PHP: *update* sha1() und Bugs

vendredi 3 novembre 2006, 16:04

- Ändere das Übertragungsverfahren des Formulars von 'get' auf 'post', damit die Passwörter nicht in Access-Logfiles auftauchen.
- Greife auf die Variablen über das entsprechende Supergobals-Array zu, also nun $_POST. Ergo:

Code source

1
2
$user = $_POST['user'];
$krypto = sha1($_POST['pass']);

Martin666

God

Re: PHP: *update* sha1() und Bugs

vendredi 3 novembre 2006, 16:29

ah, stimmt *hust* das is mir zwar aufgefallen, dass die in der URL mit übergeben wurden, hab aber das prekäre dahinter nicht erkannt.

Ja wunderbar, funzt nun... danke dir Y0gi

Eine sache wäre da noch, und zwar dass die Ausgabe des scriptes auf der selben seite wie das formular erfolgt. aber ich schätze da muss ich das ganze formular umschreiben oder?
Kyros > Radeon 5750 > Radi AMS 420 > aqualis > Laing DDC

Y0Gi

God

Re: PHP: *update* sha1() und Bugs

vendredi 3 novembre 2006, 16:42

Einfach den Teil absplitten, der die Parameter entgegennimmt und verarbeitet, diesen in eine eigene Datei stecken und das Action-Attribut des Formulars anpassen.

Clark

God

Re: PHP: *update* sha1() und Bugs

vendredi 3 novembre 2006, 17:56

Also, ich würde an deiner Stelle kein sha1 verwenden, dass hat ja noch nichtmal nen Salt.

Nimm crypt: (von php.net)

Code source

1
2
3
4
$passwort = crypt('mein_Pwd'); // let the salt be automatically generated
if (crypt($benutzer_eingabe, $passwort) == $passwort) {
   echo "Passwort stimmt überein!";
}


Das oben ist zum initialen erzeugen des passwortes, das so erzeugte passwort wird in der Datei/Datenbank abgespeichert.
Der dabei erzeugte SALT sorgt dafür, dass auch wenn Zwei Personen das gleiche Passwort haben dies nicht für jeden direkt erkennbar ist (Die Berechnung kompliziert sich).
Es ist somit auch nicht möglich millionen von Passwrötern vorzuberechnen und die dann nurnoch zu vergleichen. (was zwar viele Daten erzeugt aber sehr schnell dann zu knacken ist).

Vergleichen tust du das dann indem du crypt($benutzer_eingabe, $passwort) == $passwort das benutzt. Der SALT wird hierbei aus dem $passwort (aus der db/Datei) geholt und somit sollte der gleiche Schlüssel erzeugt werden. Wird er es nicht war das Passwort falsch.
c++: The power, elegance and simplicity of a hand grenade.

Eikman

Moderator

Re: PHP: *update* sha1() und Bugs

vendredi 3 novembre 2006, 18:14

So einfach ist das nicht. crypt() benutzt DES, welches nur einen sehr kurzen Schlüssel benutzt. Sobald ich also den Salt herausbekommen habe (was kein Problem sein sollte, wenn ich schon an die .htpasswd rankomme) lässt sich das Passwort "relativ" schnell herausfinden. Laut Wikipedia hat man es 1999 in nur 23 Stunden geschafft. Aufgrund des starken Anstiegs der Rechenkapazität würde das heute auch mit weniger als 100.000 Rechnern klappen.