Coders Crap :D

[...] keine typisierte Prüfung [...]

In C# wurde sowas ähnliches mittels var

var hat überhaupt nichts damit zu tun. Es gibt funktional keinen Unterschied, ob du den Typen hinschreibst oder var, nach dem Compilieren ist beides genau gleich. Ebenso müssen sämtliche Regeln bezüglich den Typen eingehalten werden. Du musst einfach nicht mehr den Typen vor die Variable schreiben was ne gute Sache ist, weil der sowieso komplett uninteressant ist. Du kannst damit also auf unnötigen Aufwand verzichten und bekommst direkt ein grosses Plus punkto Erweiterbarkeit geschenkt.

@bofh1337:
Nein. password_hash verwendet einen bcrypt basierten Algorithmus. Diese blowfishbasierten Methoden wurden genau für Passwörter entwickelt und sollten SHA vorgezogen werden.
 
So steht es in der Doku:

password_hash() creates a new password hash using a strong one-way hashing algorithm. password_hash() is compatible with crypt(). Therefore, password hashes created by crypt() can be used with password_hash().

Doku von crypt();:
crypt() gibt einen Hash-String zurück, der unter Verwendung des DES-basierenden Unix-Standard-Hashingalgorithmus oder einem anderen auf ihrem System verfügbaren Algorithmus erstellt wurde.

Einige Betriebssystem unterstützen mehr als eine Methode zum Hashen. So wird manchmal der DES- durch einen MD5-Algorithmus ersetzt. Der verwendete Algorithmus wird durch das Salt-Argument bestimmt. Vor PHP 5.3 wurden die verfügbaren Algorithmen zum Installationszeitpunkt anhand der systemeigenen crypt() Funktion untersucht. Wird kein Salt angegeben, erzeugt PHP entweder einen 12-Zeichen MD5 Salt oder, falls MD5 nicht verfügbar ist, einen einen 2-Zeichen DES-Salt. PHP setzt eine Konstante CRYPT_SALT_LENGTH, welche die Länge des längsten von den Algorithmen unterstützen Salts enthält.

Und am ende:
Hinweis:

Seit PHP 5.3.0 enthält PHP eine eigene Implementation und verwendet diese, wenn das System einen oder mehrere der Algorithmen nicht unterstützt.

Wie die Passwörter gehasht werden hängt demnach vom Server ab, aber ab PHP 5.3.2 wurde auch SHA-256 und SHA-512 als Algo mit eingebaut.
Also Optionen muß ich dem "password_hash()" das Unverschlüsselte Password, den Hash-Algo und ein Array mit Optionen (wie dem Salt) übergeben, macht für mich im Moment nur wenig Sinn, weil ich es so schon bei mir eingebaut habe, ich teste das "password_hash" aber mal ausführlich bei mir ;)
 
Widerspricht du dir nicht selbst?
Seit PHP 5.3.0 enthält PHP eine eigene Implementation und verwendet diese, wenn das System einen oder mehrere der Algorithmen nicht unterstützt.
...
Wie die Passwörter gehasht werden hängt demnach vom Server ab
Wenn der Server von sich aus bestimmte Algorithmen nciht unterstützt,
gibt es dafür eine PHP-Implementierung, damit sie trotzdem verwendbar sind...
Also nicht serverabhängig.

Also Optionen muß ich dem "password_hash()" ... den Hash-Algo ... übergeben
Genau, und bcrypt ist DES/MD5/SHA-Sachen vorzuziehen.
password_hash hat gesagt.:
The following algorithms are currently supported:

PASSWORD_DEFAULT - Use the bcrypt algorithm (default as of PHP 5.5.0). Note that this constant is designed to change over time as new and stronger algorithms are added to PHP
...

PASSWORD_BCRYPT Use the CRYPT_BLOWFISH algorithm
...
crypt hat gesagt.:
CRYPT_STD_DES
CRYPT_EXT_DES
CRYPT_MD5
CRYPT_BLOWFISH
CRYPT_SHA256
CRYPT_SHA512

PS: Das gehört zwar nicht hierher, aber User mit ersten Beitrag = Werbung sind nicht selten :p
 
Ich habe mir nur ein wenig Gedanken gemacht, was mit den Passwörtern passiert, wenn ein Hash-Algo auf dem aktuellen Server nicht verfügbar wäre...jetzt mache ich mir aber Gedanken darüber, was passiert, wenn die (im Script) eingebaute Funktion zur Nutzung von SHA512 nicht verfügbar ist. Ich bin ja mit dem gesamten Script noch nicht fertig, also werde ich es doch auf die PHP-Interne Funktion umbauen ;)

PS: Das gehört auch nicht hier hin, aber der User mit dem ersten Beitrag mit der Werbung hatte ein nettes Angebot :p
 
Zurück