Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > PHP > PHP-Programmierung > Sicherheit der Passworteingabe und md5()
Antwort
 
Themen-Optionen
Alt 01.05.2006, 20:12   Nach oben    #1
Mensch
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.710
Standard Sicherheit der Passworteingabe und md5()

Komischer Titel, ist aber so

Zu meiner Schande muss ich gestehen, dass ich mich erst seit kurzem intensiver mit Sicherheitsfunktionen von PHP beschäftige.

Nun meine Frage (ich denke mal ich steh auf dem Schlauch
Wenn jemand versucht mit SQL-Injections über das Passwortfeld ärger zu machen, ist doch durch die Anwendung von md5() auf die "ungeprüfte" Eingabe Sicherheit gegeben oder? Immerhin dürfte alles "gefährliche" ja durch den Hash ersetzt worden sein. Laut Manual gibts auch nicht wirklich ein anderen Returnwert als den Hash wenn ein Fehler auftritt.
__________________
I did it my way - Senseless-Blog
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.05.2006, 20:22   Nach oben    #2
Erfahrener Benutzer
 
Benutzerbild von Chr!s
 
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
Standard

Von gefährlichen MD5Werten hab ich noch nie gehört. Wie auch, zudem die doch nur ein HashPattern von[0-9a-f]i haben.. (oder verwechsel ich grad was?)
__________________
http://www.ChrisDiary.De
Chr!s ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.05.2006, 20:46   Nach oben    #3
Waq
Erfahrener Benutzer
 
Registriert seit: 18.08.2005
Beiträge: 108
Standard

Mit SQL-Injections wird man da in der Tat keine Probleme bekommen, aber:
- Ich persönlich würde Versuchen, alle Variablen im SQL-String gleich zu behandeln, einfach aus Gründen der Konsistenz, ist aber nur eine Stilfrage.
- md5() hat bei Passwörtern eigentlich nichts zu suchen.
Waq ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.05.2006, 20:58   Nach oben    #4
BIN EIN KRASSA HELD!!!111
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.185
Standard

Zitat:
Zitat von Waq
- md5() hat bei Passwörtern eigentlich nichts zu suchen.
wie meinst du das jetzt ? dass man mitlerweile lieber sha-1 nutzen soll ?
robo47 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.05.2006, 22:13   Nach oben    #5
Mensch
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.710
Standard

ich weiß nur, dass md5-hashs nicht wirklich unique sind und der gleiche hash aus 2 verschiedenen strings entstehen kann, aber dass md5 nicht dafür benutzt werden soll ist mir auch neu.
__________________
I did it my way - Senseless-Blog
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.05.2006, 22:32   Nach oben    #6
Waq
Erfahrener Benutzer
 
Registriert seit: 18.08.2005
Beiträge: 108
Standard

md5() und Konsorten (z.B. sha1) sind keine Verschlüsselung, waren nie eine und werden nie eine werden.
Dass md5() dafür gerne zweckentfremdet wird ist eine Mischung aus Tradition und daraus, dass ordentliche Lösungen nicht so trivial sind.

Ordentliche Passwortverschlüsselungen findet man über die Funktion crypt(), wobei hier md5-crypt bevorzugt werden sollte, falls Verfügbar ist blowfish freilich noch besser.



Mal ganz davon abgesehen, dass md5() seit Jahren veraltet ist und durch sha1() ersetzt werden sollte... wobei sha1() erst seit PHP 4.3 dabei ist.
Waq ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.05.2006, 22:32   Nach oben    #7
Jay
Gast
 
Beiträge: n/a
Standard

sha1 würd ich nicht verwenden. ist nämlich schon ein paar mal geknackt worden.

md5 kann man ruhig verwenden.

MfG Fat Tony
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.05.2006, 22:35   Nach oben    #8
Jay
Gast
 
Beiträge: n/a
Standard

Zitat:
md5() und Konsorten (z.B. sha1) sind keine Verschlüsselung, waren nie eine und werden nie eine werden.
das ist auch gut so, denn für eine verschlüsselung gibt es auch immer eine entschlüsselung.

ich glaube du hast nicht verstanden warum man seine passwörter hashed und nicht verschlüsselt.

MfG Fat Tony
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.05.2006, 23:14   Nach oben    #9
Mensch
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.710
Standard

Zitat:
sha1 würd ich nicht verwenden. ist nämlich schon ein paar mal geknackt worden.
geknackt heisst es verallgemeinert. genauer gesagt ist wohl die 100 jahre-grenze geknackt worden. deshalb ist und bleibt sha-1 sicher.
Zitat:
ich glaube du hast nicht verstanden warum man seine passwörter hashed und nicht verschlüsselt.
es gibt auch hashtabellen in denen millionen hashs und ihr klartext stehen. da ist sha1 schon sicherer, da geb ich waq recht.
__________________
I did it my way - Senseless-Blog
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.05.2006, 09:54   Nach oben    #10
Erfahrener Benutzer
 
Registriert seit: 30.10.2005
Beiträge: 274
Standard

Ja was soll man dann für Passwörter machen?
Sollte man eine Spalte anlegen wo vielleicht sowas reinkommt?
PHP-Code:
 md5($pass).':'.sha1($pass
Dass beim Login mit explode rausholen und vergleichen?
ex³ ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.05.2006, 10:18   Nach oben    #11
BIN EIN KRASSA HELD!!!111
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.185
Standard

das wäre unnötig, was hat man von 2 hash-werten ?
robo47 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.05.2006, 11:59   Nach oben    #12
Erfahrener Benutzer
 
Benutzerbild von Chr!s
 
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
Standard

Das mit den HashDatenbanken ist zwar schon ein schlagendes Argument, für mich aber ehrlichgesagt immer noch nicht ausreichend um die Verwendung von md5() einzustellen. Mag ja stimmen, dass md5($password) nicht wirklich der Knüller ist - beim 2fachen haschen ( md5(md5($password)) ) wirds dann mit den Datenbanken aber schon schwieriger, und selbst wenn einem diese Lösung nicht gefällt kann man immer noch auf andere Techniken zurückgreifen.

Dass es in MD5 Kollisions-Hashes gibt ist mir auch bereits bekannt, da hatte ich mal ne ziemlich lange PDF darüber gelesen. Crypt ist natürlich eine alternative, aber über diese hatte ich eigentlich noch nicht ernsthaft nachgedacht. Ist MD5 denn wirklcih "so" schlimm?
__________________
http://www.ChrisDiary.De
Chr!s ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.05.2006, 12:29   Nach oben    #13
Waq
Erfahrener Benutzer
 
Registriert seit: 18.08.2005
Beiträge: 108
Standard

Zitat:
Zitat von Fat Tony
denn für eine verschlüsselung gibt es auch immer eine entschlüsselung.
Das ist schonmal falsch. Man kann den Begriff Verschlüsselung natürlich so definieren, dass diese immer bidirektional arbeitet, man kann aber auch speziell für den Zweck des Passwort-Zerhackens Algorithmen schreiben und diese dann hinter die Funktion crypt() legen. Und wofür steht "crypt" wohl?

Zitat:
Zitat von Fat Tony
ich glaube du hast nicht verstanden warum man seine passwörter hashed und nicht verschlüsselt.
Doch doch. Man hashed Passwörter, weil man nicht weiss, dass es dedizierte Passwortverschlüsselungsalgorithmen gibt, oder einem deren Verwendung zu kompliziert ist. Einen anderen Grund gibt es nicht.

Zitat:
Zitat von Fat Tony
sha1 würd ich nicht verwenden. ist nämlich schon ein paar mal geknackt worden.
Weisst Du auch, was "geknackt" in diesem Zusammenhang bedeutet?
Weisst Du auch, dass md5 öfter und deutlich gründlicher geknackt wurde?

Zitat:
Zitat von Fat Tony
md5 kann man ruhig verwenden.
Wenn man sich nicht daran stört, als Amateur dazustehen kann man das natürlich machen...

Zitat:
Zitat von ex³
Ja was soll man dann für Passwörter machen?
Welcher Teil des Satzes "Ordentliche Passwortverschlüsselungen findet man über die Funktion crypt()" ist zu kompliziert?

PS: Meine leicht gereizte Stimmung ist darin begründet, dass es nach Jahren immer noch Leute gibt, die meinen, md5 wäre toll oder gar eine Verschlüsselung, und dann am besten noch anfangen mit Halbwissen über Kryptographie die Leiche md5 zu verteidigen, und ich zu oft darüber schreiben musste.
Diskussionen findet man ein paar bei php.de, wenn jemand ne kurze Anleitung findet, wie man crypt() benutzt, kann er ja den Link posten.
Waq ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.05.2006, 12:40   Nach oben    #14
Waq
Erfahrener Benutzer
 
Registriert seit: 18.08.2005
Beiträge: 108
Standard

Zitat:
Zitat von Chr!s
Das mit den HashDatenbanken ist zwar schon ein schlagendes Argument, für mich aber ehrlichgesagt immer noch nicht ausreichend um die Verwendung von md5() einzustellen.
sha1() ist fast dasselbe wie md5(), nur besser und seit PHP 4.3 in PHP vorhanden.
Dass allein ist Grund genug, md5() in die Tonne zu kloppen, selbst wenn einem crypt() zu kompliziert ist.

Zitat:
Zitat von Chr!s
beim 2fachen haschen ( md5(md5($password)) ) wirds dann mit den Datenbanken aber schon schwieriger
Das macht es nötig, für doppeltes md5() eine eigene Datenbank zu erstellen, normale Brute-Force-Attacken aber schätzungsweise einfacher, da man den Suchraum (bei einfachem md5: Menge der Passwörter und ihrer Kollisionen, also Eingaben die das gleiche Ergebnis liefern) vereinfacht und schlicht mehr Angriffspunkte liefert.
Nicht, dass ich wirklich Ahnung von Kryptographie hätte, das ist jetzt nur geschätzt.

Geändert von Waq (02.05.2006 um 12:46 Uhr).
Waq ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.05.2006, 12:56   Nach oben    #15
Erfahrener Benutzer
 
Benutzerbild von Chr!s
 
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
Standard

Interessante Sache. Über MD5 hab ich mir noch nicht wirklich so große Gedanken gemacht. Aber das wird wohl stimmen was du sagst, ich werd auch gerne auf crypt() umsteigen. Ich finde, das wär ein gutes Tutorial Thema
__________________
http://www.ChrisDiary.De
Chr!s ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.05.2006, 13:23   Nach oben    #16
Mensch
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.710
Standard

das nenn ich ne schöne Diskussion
ich werd mich auch mal mit crypt() beschäftigen, soo schwer kanns ja nun nicht sein
__________________
I did it my way - Senseless-Blog
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.05.2006, 16:52   Nach oben    #17
Jay
Gast
 
Beiträge: n/a
Standard

So viel ich gelesen habe steht nur MD5/SHA1 auf jeder Platform zur Verfügung. Alle anderen von crypt unterstützten "Einweg-String-Verschlüsselungen" stehen eben nicht auf jeder Platform zur Verfügung und liefern von Platform zu Platform unterschiedliche Ergebnisse d.h. läuft eine Anwendung zu erst auf einem Windows Server und zieht zB auf einen Linux um so sind alle Passwörter "fürn arsch".

Das wäre schon mal ein Grund crypt nicht zu verwenden. In einem Red Hat Forum habe ich auch noch gelesen, dass crypt einfacher zu knacken ist als md5.
Außerdem verwendet crypt nur die ersten 8 Buchstaben.

Meiner Meinung am sichersten:
Mit md5 verschlüsseln und einen SALT verwenden.

zB.:

$salt = "fetterTony";
$hash = md5 ($salt . md5 ($password) . $salt);

MfG Fat Tony
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.05.2006, 17:57   Nach oben    #18
Erfahrener Benutzer
 
Benutzerbild von Chr!s
 
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
Standard

Das mit den MD5Salts kann man dann natürlich noch z.B. etwas kreativer erweitern, und als Salt das Registrierdatum eines Users im als unixtimestamp nehmen und vllt sogar noch was dazu..

Ist Crypt denn wirklch nicht überall verfügbar?
__________________
http://www.ChrisDiary.De
Chr!s ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.05.2006, 17:59   Nach oben    #19
Projektleiter
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.225
Standard

im manual steht derartiges nicht...
(oder ich habe es überlesen)

http://de3.php.net/crypt
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.05.2006, 18:08   Nach oben    #20
Jay
Gast
 
Beiträge: n/a
Standard

Zitat:
im manual steht derartiges nicht...
crypt ist ja auch überall verfügbar, nur unterstützt crypt mehrere Algos und von denen ist nur der MD5 einheitlich und überall verfügbar.

such doch mal bei Google "md5() vs. crypt()"
auf den hinteren Seiten kommen ein paar gute Seiten zum Thema.

Im Manual steht auch noch:
Zitat:
Einige Betriebssystem unterstützen mehr als eine Methode zur Verschlüsselung. So wird manchmal der DES- durch einen MD5-Algorithmus ersetzt.
d.h. das heißt IMHO auch, dass einige nur einen Algo unterstützen. Einige externe Webseiten besagen aber auch, dass eben für crypt nur MD5 sicher immer unterstützt wird (siehe Google).

MfG Fat Tony
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


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

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaub