web-dev-qa-db-fra.com

Comment fonctionne la fonctionnalité "authentification des clés et des sels uniques"?

J'essaie de trouver des informations sur le fonctionnement des clés d'authentification et des sels dans WordPress, mais je n'ai malheureusement rien trouvé d'utile. Tout ce que j'ai à dire, c'est que les clés doivent être aléatoires, longues et différentes les unes des autres. Ils doivent être définis dans le fichier wp-config.php car ils "augmentent considérablement la sécurité du site" en "assurant un meilleur cryptage des informations stockées dans les cookies de l'utilisateur".

J'ai en fait quelques questions, pas seulement une, mais je pense qu'elles devraient être dans un fil, car elles sont étroitement liées.

  1. Que veut dire "meilleur cryptage de l'information"? Je veux dire par contraste avec la situation sans les clés.

  2. Pourquoi ai-je besoin de 8 clés et pas seulement d'une? À en juger par les noms - AUTH, SECURE_AUTH, LOGGED_IN, NONCE - ils devraient définir quatre cookies. Un et deux pour l’authentification via les protocoles http et https respectivement, trois pour l’enregistrement et 4 ... Je ne sais pas du tout à quoi cela servirait.

  3. Pourquoi ai-je besoin de clés et de sels? Cela ne fonctionnerait-il pas uniquement pour les clés? Ils sont assez longs et aléatoires, alors à quoi servent les sels supplémentaires dans ce cas?

  4. J'ai lu une autre question (je ne me souviens pas exactement où c'était) et il y avait des informations selon lesquelles si vous supprimez les clés et les sels du fichier wp-config.php, ils seront stockés dans la base de données WordPress sous la table wp_options. Et c'est vrai, j'ai testé cela, les clés ont été créées et placées dans la table. Mais que se passerait-il si je restaurais les clés (différentes) dans le fichier wp-config.php? Les deux clés du fichier wp-config.php et de la base de données seront-elles combinées en une seule, comme le suggère la question, ou une seule d'entre elles sera-t-elle utilisée? Si oui, laquelle?

  5. Que se passe-t-il réellement lorsqu'un utilisateur visite mon blog? Il a un compte, voir la page principale et se connecter au système, et quelle est la suite? Je veux dire que se passe-t-il avec les clés, les cookies (et tout le reste) en ce moment? Quel est le processus exact de connexion à un site Web WordPress?

  6. Quelle est la meilleure taille des clés? La valeur par défaut est 64 caractères. Y a-t-il une limite ici?

  7. Puis-je mettre n'importe quel caractère dans les touches (bien sûr, sans ')? Puis-je utiliser des caractères de langue étrangère, par exemple, ó ou Ż? Qu'en est-il de © et des autres?

1
Mikhail Morfikov
  1. En gros, ce sont des sels de hachage. Ils sont utilisés pour rendre les résultats du hachage beaucoup moins prévisibles. Voir https://en.wikipedia.org/wiki/Salt_ (cryptographie) pour plus d'informations sur les sels.

  2. AUTH est utilisé pour le cookie d'authentification/wp-admin, SECURE_AUTH est identique pour l'utilisation de SSL, LOGGED_IN est utilisé pour l'identification au "serveur" du site. NONCE est utilisé pour les ressources générées par WordPress afin de se protéger contre les attaques CSRF.

  3. Les touches KEY et SALT de chaque programme sont combinées pour obtenir le sel réellement utilisé. La fonction wp_salt vérifie la présence de chaînes dupliquées afin de s’assurer qu’elles ne sont pas identiques, et de générer des chaînes aléatoires, le cas échéant.

  4. WordPress utilise préférentiellement les valeurs du fichier wp-config.php. S'ils ne sont pas disponibles ou sont des doublons, des données aléatoires sont générées et stockées dans la base de données. Mais les valeurs définies dans le fichier wp-config.php sont prioritaires.

  5. Lorsque vous vous connectez, le mot de passe est validé. Après cela, les cookies sont générés. Ces cookies contiennent diverses informations qui vous authentifieront sur le site lors de vos prochaines visites. La valeur du cookie change en fonction de nombreux facteurs, notamment le délai d'expiration, votre nom d'utilisateur, votre mot de passe, etc. En principe, le cookie est un nom d'utilisateur et un mot de passe tout en un. Ces données sont hachées à l'aide des clés d'authentification et des sels. Lors de visites ultérieures, le cookie est envoyé avec la demande et WordPress valide les informations qu'il contient. Cela prouve que vous êtes bien et que vous êtes connecté. La valeur dans le cookie est sécurisée, car elle ne peut être générée sans connaître les différents sels ainsi que toutes les autres informations.

  6. Leur taille est vraiment hors de propos. Ils devraient être longs et aléatoires. Il n'y a pas de limite, mais il y a un point de rendement décroissant. Plus c'est mieux, mais cela prend plus de temps pour le hachage. Après environ 120 caractères environ, c'est un peu exagéré.

  7. Oui. Vous pouvez utiliser toutes les données que vous aimez. Peu importe ce que c'est, tant que c'est vraiment aléatoire. Toute chaîne binaire fera l'affaire. Bruit de ligne.

4
Otto