web-dev-qa-db-fra.com

Est-il prudent de signer manuellement un utilisateur utilisant AJAX?

J'ajoute une connexion modale à mon thème.

La voie la plus directe consiste à créer un modèle et à y inclure wp_login_form();. Cela chargera la connexion principale qui pourra être personnalisée un peu plus tard, en utilisant CSS ou jQuery.

Cependant, la page doit être rechargée pour vérifier les informations d'identification. Mon idée était d'envoyer le nom d'utilisateur et le mot de passe haché à l'aide d'une demande AJAX, puis de connecter l'utilisateur via wp_singon().

Maintenant mes questions sont:

  1. Est-ce sécuritaire de faire cela? WordPress lui-même envoie le mot de passe au serveur d'une certaine manière, mais je ne suis pas sûr que ce soit le cas.
  2. Si cela vous convient, devrais-je utiliser admin-ajax? ou l'API REST peut-elle également gérer la connexion?
  3. Si tout ce qui précède vous convient, une dernière question. wp_signon() est-il la fonction appropriée pour la connexion? Je pensais que wp_set_auth_cookie() pourrait aussi être utile.

Merci!

1
Jack Johansson

En supposant que vous ne fassiez pas de bêtises et que vous utilisiez correctement l'API appropriée, un formulaire de connexion AJAX peut être aussi sécurisé que le formulaire de connexion "principal".

La manière dont vous transférez les données n’est pas très importante en soi. Même HTTP, bien que Google et les gens prétendent qu'il n'est pas sécurisé, peut probablement être suffisamment sécurisé avec 2FA, mots de passe à usage unique, ou utilisez simplement votre propre connexion cellulaire au lieu d'un café/réseau de travail/WiFi. Dans tous les cas, il appartient au propriétaire du site de décider.

En ce qui concerne le point 3, wp_signon est le bon et à partir de là, toute l’authentification et la configuration des cookies doivent être effectuées.

Une chose à garder à l'esprit lors de l'exécution d'AJAX est qu'une connexion réussie ne reflétera pas en soi le nouveau statut de l'interface utilisateur sans travail supplémentaire, et le chemin le plus simple consiste probablement à simplement actualiser la page, ce qui rend l'ensemble AJAX idée beaucoup moins attrayante.

Un autre obstacle que vous rencontrerez est le signalement des erreurs. Par exemple, si les correspondances utilisateur/mot de passe ne sont pas identiques, vous devrez transférer les erreurs de connexion au serveur frontal et les rendre suffisamment génériques pour permettre aux autres plug-ins liés à la connexion les erreurs.

Si vous croyez que je suis contre la connexion via AJAX, je suppose que je le suis, mais ceci n’est qu’un avis personnel, il n’ya rien techniquement impossible ou peu sûr à ce sujet.

2
Mark Kaplun