Annotation de propriété @hash
-
Redirected from @hash
ATTENTION : Il semble que cette annotation n’existe pas en production au niveau framework, et constitue un doublon par rapport à l’annotation de propriété @encrypt, aux propriétés similaires. Cet article serait à mettre à jour en concordance.
L’annotation
@hash
s’utilise sur une propriété de type string.
Elle permet de chiffrer la donnée au moment de son enregistrement en base de donnée.Cette annotation prend un paramètre obligatoire qui est l’algorithme de chiffrement à utiliser.
Dans le code suivant :
class Foo { /** * @hash sha512 * @var string */ public $bar; }
La donnée sera hachée avec l’algorithme SHA512.
(i) Ce paramètre est insensible à la casse. Ainsi, on peut tout aussi bien écrire@hash sha512
que@hash SHA512
.Si l’algorithme renseigné n’existe pas, une
\InvalidArgumentException
est levée au moment de l’écriture en base de donnée.La liste des algorithmes utilisables est déterminée à l’aide de la fonction php http://php.net/manual/en/function.hash-algos.php hash_algos() hash_algos().
Côté interface utilisateur, le champ est affiché dans un
<input type="password">
et la valeur brute ne peut jamais être récupérée.Pour des raisons de sécurité (prévention contre les attaques temporelles), il est recommandé d’utiliser la fonction php hash_equals() pour comparer deux hash au lieu d’utiliser l’opérateur (ou =).
Exemple :
// Ne pas écrire : if ($hash1 === $hash2) { } // Écrire : if (hash_equals($hash1, $hash2)) { }