php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 08.03.2008, 01:41  
Erfahrener Benutzer
 
Benutzerbild von tomtaz
 
Registriert seit: 17.06.2008
Beiträge: 1.762
PHP-Kenntnisse:
Fortgeschritten
tomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig nett
tomtaz eine Nachricht über ICQ schicken tomtaz eine Nachricht über Skype™ schicken
Standard Sicherer Passwort Hash

Hallo Leute,

ich denke, dass ich das hier im richtigen Forum poste jetzt.

Es geht um folgendes. Ich habe erst kürzlich im Internet gelesen, dass ein MD5 Hash eines Passwortes wohl nicht mehr so sicher ist. Nun suche ich nach einer Lösung für ein sicherers Password.

Ich dachte da an so etwas:
PHP-Code:
$server $_SERVER'SERVER_NAME' ];
$password 'password';

// Generate md5 hash from servername
$s_hash md5$server );

$password substr$s_hash015 ) . md5$password ) . substr$s_hash16 );

echo 
sha1$password ); 
Ist das sicher genug, oder geht das sicherer. Was denkt ihr darüber?
__________________
Mfg Tomtaz
"Es soll jetzt diese Erfindung geben.... Kugel oder so heißt die. Ist so eine Art Suchmaschine..."
tomtaz ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 08.03.2008, 10:12  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Hallo,
das einzige Problem an md5-Hashs ist, dass es dafür schon sehr umfangreiche Rainbow-Tables gibt. Das sind Tabellen in denen du für einen bestimmten Hash das (bzw. ein) Passwort nachschlagen kannst.

Dagegen hilft es das ganze zu "salzen", wie du es im Prinzip ja schon maachst: Such einfach mal nach md5 + salt.
__________________
Today you...Tomorrow me.
agrajag ist offline   Mit Zitat antworten
Alt 08.03.2008, 10:13  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo tomtaz,

ja, es gibt Möglichkeiten md5-Hashes quasi zurückzurechnen. Das bedeutet aber meistens nur, dass man einen String "findet", der den selben Hash ergibt. Um das zu tun braucht es aber mehr oder weniger komplizierte Algorithmen und vor allem Rechenleistung. Hier braucht man also schon ein wenig mehr kriminelle Energie wie ein Script-Kiddi.

Fazit: md5() reicht heute ohne weiteres aus, wenn die Applikation an sich sicher ist und keine weiteren Scheunentore hat. Ist dir das zu unsicher, weil mehrere Leute auf die DB und/oder die Password-Hashes Zugriff haben, kannst du sha1() oder besser folgendes verwenden:

PHP-Code:
<?php
$Password 
'mypass';
$PasswordSalt '$2a$my$alt';
crypt($Password,$PasswortSalt);
?>
Siehe hierzu http://de2.php.net/manual/de/function.crypt.php. Es stehen dir verschiedene Salts zur Verfügung. Verwendest du dazu noch einen dynamischen Salt, der sich zeitlich ändert, bist du absolut sicher.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 08.03.2008, 14:27  
Erfahrener Benutzer
 
Benutzerbild von tomtaz
 
Registriert seit: 17.06.2008
Beiträge: 1.762
PHP-Kenntnisse:
Fortgeschritten
tomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig nett
tomtaz eine Nachricht über ICQ schicken tomtaz eine Nachricht über Skype™ schicken
Standard

Hallo dr.e,

vielen Dank für deine Antwort. Ich werde deinen Rat beherzigen und es so machen wie du sagst, auf Zeit. Damit ist man ja erstmal sicher unterwegs.

Ist warscheinlich auch nur ne Frage der Zeit bis die uns das Leben wieder schwer machen...
__________________
Mfg Tomtaz
"Es soll jetzt diese Erfindung geben.... Kugel oder so heißt die. Ist so eine Art Suchmaschine..."
tomtaz ist offline   Mit Zitat antworten
Alt 08.03.2008, 18:22  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Ich benutz für jeden Anwendung einen anderen Salt:

PHP-Code:
<?php
class User extends UserGen {
  const 
HASH_SALT "2%&$/9862fgncqit#+-ßp#-.";
  public static function 
HashPassword($password) {
    return 
md5(serialize(array(HASH_SALT,$password)));
  }
?>
Alternativ momentan auch SHA1.
Zergling-new ist offline   Mit Zitat antworten
Alt 14.03.2008, 13:09  
Neuer Benutzer
 
Registriert seit: 08.01.2007
Beiträge: 20
solariz
Standard

Auch für SHA1 gibt es bereits einige Rainbowtables zwar nicht so umfangreich aber im prinzip auf alles anwendbar was ohne salt arbeitet. Die Methode die du quasi selbst nutzt ist z.b. schon übertrieben me nach denn es reicht im prinzip schon das md5 üassword mit einem beliebigen salt zu versehen um nicht mehr einen treffer in einer rainbow table zu landen.

Also servername oder auch eine feste salt sind gegen rainbowtables ausreichender Schutz.

PHP-Code:
<?
$password 
"sex";
$passwordMD5 md5($password."thisismysecret");
?>
macht es also schon nicht mehr möglich durch einfaches abfragen einer rainbowtable auf das password "sex" zu schließen.

sex = 3c3662bcb661d6de679c636744c66b62

das ganze mit dem secret:

6434b468e5592d7d70b2691db2925b61

Wenn du nun noch einen extravaganten Salt verwendest mit sonderzeichen z.b.
"Th!s_!5mY5³<r3t!.#*" wird es schier unmöglich.


Es gibt einige Ansätze die das ganze mit zeitlich alterierenden salts versuchen aber mE nach vollkommen unnötig.

Eine gute Alternative wie ich sie verwende ist das hashen zwischen user name und Password. Vorraussetzung hierfür ist das der username ein eindeutiger identifier ist.

PHP-Code:
<?
$hashed 
md5($username.$salt.$password);
?>
solariz ist offline   Mit Zitat antworten
Alt 14.03.2008, 14:56  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

Allgemein ist es von Vorteil in den Salt etwas einfließen zu lassen, was bei jedem Nutzer anders ist, weil selbst wenn bekannt ist was es ist, wird man wenn man eine Rainbow-table selbst erstellt, das eben nur für einen Benutzer machen können, nie für alle.
Sinnvoll können hier Dinge sein wie Benutzername, Emailadresse, Registrierungsdatum, immer vorrausgesetzt es sind Dinge die der User im Normalfall nicht ändert und wenn, dann muss halt der Kram neu erstellt werden.
robo47 ist offline   Mit Zitat antworten
Alt 15.03.2008, 09:11  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Hier wird letztlich aber trotzdem am Problem vorbeigeredet, wenn der MD5 Hash zum Passwort bekannt ist, ist das System geknackt und somit alles, inklusive Salt dem Hacker verfügbar (es sei denn es wird eine externe DB-Verbindung verwendet). Hashwerte dienen AUSSCHLIESSLICH zum Schutz vor Administratoren (!), also der Einsicht des Klartextpasswortes (beim "normalen" anschauen der Datenbank-Werte).
Zergling-new ist offline   Mit Zitat antworten
Alt 15.03.2008, 13:19  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo Zergling,

ich kann dir nicht ganz zustimmen. Überträgt man Passwörter z.B. in der Session oder in Cookies, so möchte man das Passwort dadurch auch vor der Einsicht dritter schützen. Weiterhin ist ein gesalzener Hash immer "besser" als ein nicht gesalzener Hash.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 15.03.2008, 18:20  
Erfahrener Benutzer
 
Benutzerbild von DER_Brain
 
Registriert seit: 18.04.2005
Beiträge: 1.541
PHP-Kenntnisse:
Fortgeschritten
DER_Brain ist zur Zeit noch ein unbeschriebenes Blatt
Standard

tut mir leid, wenn ich mich jetzt mit meiner eher unqualifizierten meinung einbring, aber ich hätte ne kurze Frage:

Wenn ich mir zweimal einen Hash generieren lasse:
PHP-Code:
$pwd "PHP";
$secure md5(md5($pwd)); 
dann habe ich - denke ich zumindest - einen gewöhnlichen Hash, der mir aber wenn ich das ganze mit ner rainbow table auswerten lasse (oder wie auch immer kA) wieder nur das verschlüsselte zeigt.


Jetzt mal abgesehen davon, dass man - wenn man darauf vorbereitet ist - das ganze einfach NOCHeinmal durchlaufen kann, wie sicher ist das bzw. wo habe ich meinen Denkfehler (der bestimmt irgendwo dabei ist)?



danke,



mfg
andi
DER_Brain ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Passwörter verschlüsselt übertragen Der Blaue Gott Balmung PHP Tipps 2008 14 06.04.2008 23:18
bildanzeige bei falschem passwort chrissie PHP Tipps 2006 1 22.08.2006 15:37
passwort script problem PHP Tipps 2006 8 15.02.2006 10:30
Eingabefenster für Passwort Nevermind PHP Tipps 2007 10 18.12.2005 15:36
[Geklärt] MD5 Hash nochmals MD5 hash´n? PHP Tipps 2005-2 44 29.10.2005 14:46
GET Übergabe durch vorherigen md5 hash checken PHP Tipps 2005-2 4 27.10.2005 15:55
Passwort abfrage Gokuson PHP Tipps 2005-2 5 28.08.2005 19:32
[Erledigt] Passwort und Nutzerverwaltung in Php und Mysql PHP Tipps 2005-2 7 23.06.2005 17:46
3 Seiten durch Passwort schützen mit einmaliger PW-Eingabe? PHP Tipps 2005 12 19.04.2005 22:41
Passwort geschützte Seite - PHP ohne MySQL PHP Tipps 2004-2 3 29.12.2004 18:26
[Erledigt] Passwort vergessen-Script PHP Tipps 2004-2 8 11.11.2004 18:56
passwort codierung PHP Tipps 2004 15 30.10.2004 17:20
Passwort übergeben duerov PHP Tipps 2004 5 27.09.2004 09:41
Passwort verschlüsselung Datenbanken 5 06.09.2004 10:31
benutzername + passwort pruefen PHP Tipps 2004 4 07.07.2004 16:14

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
passwort hash, php password hash, php passwort hash, passwörter hashen, passwort hasher, passwort hashen, sicherer hash, gesalzener hash, hash passwort, php hash password, passwort hash php, php passwort hashen, php password hashing, php sicherer hash, password hash, php hash, php hash passwort, password hash php, kennwort hashes, hashed password

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:29 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.