Mysql
 sql >> Base de données >  >> RDS >> Mysql

Pourquoi mysqli_connect() doit recevoir le paramètre password sans cryptage ?

En tant qu'utilisateur, vous ne savez pas comment le mot de passe est crypté (il n'est en fait pas du tout crypté, mais haché).

Vous transmettez simplement le mot de passe et MySQL peut effectuer le même hachage que sur le mot de passe d'origine et le comparer à ce qui est stocké. Si vous passez la version hachée, tous les avantages du hachage disparaissent :si quelqu'un obtient les hachages du serveur, il peut simplement les utiliser pour se connecter comme s'il s'agissait de mots de passe normaux. Le hash est alors devenu le mot de passe.

L'avantage supplémentaire est que MySQL, parce qu'il a le mot de passe d'origine, pourrait le re-hacher avec un meilleur algorithme, ajouter un peu de sel et stocker cette version améliorée. S'il n'obtient jamais l'original, cela ne peut pas être fait. Fonctions de mot de passe de PHP soutenir cela aussi. Vous pouvez vérifier avec password_needs_rehash si un mot de passe haché est toujours correctement haché, et mettez à jour votre base de données si ce n'est pas le cas.

Donc, pour la sécurité, vous devrez prendre d'autres mesures. Ce sont au moins :

  • Stockez le mot de passe dans un fichier inclus qui se trouve en dehors de la racine du document. De cette façon, personne ne peut ouvrir ce fichier directement.
  • Vous pouvez empêcher l'ouverture des fichiers inclus sans être inclus (par exemple en vérifiant une définition qui a été définie dans index.php). C'est bien, mais si PHP échoue en raison d'une erreur de configuration, les utilisateurs peuvent simplement parcourir la source du fichier, alors respectez la règle précédente.
  • Définissez toujours un utilisateur spécial de la base de données. N'utilisez pas root . Donnez à cet utilisateur juste assez de droits pour faire fonctionner la base de données, mais pas plus. Pas le droit de supprimer des tables par exemple.
  • Donnez toujours à cet utilisateur un mot de passe unique. Vous n'avez pas à vous souvenir de ce mot de passe. Générez simplement des ordures aléatoires avec beaucoup de caractères.
  • Changez régulièrement le mot de passe. Peut-être pourriez-vous même créer un script et stocker le mot de passe mis à jour dans la configuration.