web-dev-qa-db-de.com

Frontend Passwortänderung

Zunächst einmal entschuldige ich mich, wenn es irgendwo ein Duplikat dieses Roamings gibt ... Ich habe den größten Teil der letzten Stunde damit verbracht, nach der Lösung zu suchen, ohne Glück, aber vielleicht bin ich einfach nur am Heraussuchen von Stichwörtern scheiße.

Derzeit wird an einer Frontend-Profilumgebung für einen Client gearbeitet. Eine der verfügbaren Optionen ist die Möglichkeit, ein Kennwort festzulegen und zu ändern.

Eines der Dinge, auf die ich anscheinend keine verlässliche Antwort finden kann, ist, ob ich Sicherheitsmaßnahmen für dieses Benutzereingabekennwort treffen muss oder ob es in der Funktion wp_update_user () integriert ist.

Ich dachte ursprünglich, ich müsste wp_hash_password für die Zeichenfolge verwenden, die an den Benutzerpass von wp_update_user übergeben wird, aber das funktioniert natürlich nicht, da die gehashte Version als Kennwort in user_pass gespeichert wird und dann alles, was der Benutzer eingegeben hat, unbrauchbar wird : P

Also ... irgendwelche Sicherheitstipps, wie ich es Benutzern "richtig" erlauben kann, ihre Passwörter vom Frontend aus festzulegen und zu aktualisieren, ohne irgendetwas zu verwenden, das mit dem standardmäßigen WordPress-Dashboard zu tun hat?

Vielen Dank im Voraus für jede Hilfe, die jemand leisten kann.

Schnelle Vorschau des Codes für den Kennwortbereich des Dashboards:

Teil der PHP-Datei, die das vom Benutzer eingegebene Passwort nimmt und speichert

Ich nehme das Passwort über AJAX aus dem Formular, greife es mit $ _POST auf und versuche es dann in die Datenbank zu stellen. Ich stelle nur sicher, ob es so einfach ist oder ob ich Sicherheitsmaßnahmen in Betracht ziehen muss ?

$user_data = array(
    'ID'=>$user->ID,
    'user_pass'=>$password
);
wp_update_user($user_data);

Formulareingabe auf dem Frontend

<input type='password' name='new_password' placeholder='What would you like your password to be?' id='[xxxx-hidden-for-project-anonymity]' style='text-align: center; text-indent: 0;'/>

UPDATE - Genaueres, schrittweise geplante Passworteingabe

  1. Der Benutzer wird aufgefordert, sein Kennwort festzulegen, nachdem er seine E-Mail-Adresse bestätigt hat.
  2. Sie geben dieses Passwort in eine Texteingabe ein.
  3. Beim Absenden des Formulars (die Passworteingabe ist die einzige Eingabe in diesem speziellen Formular) habe ich AJAX eingerichtet, um das Passwort von der Eingabe in eine PHP-Funktion zu übernehmen, die mit WordPress verbunden ist.
  4. Danach muss das Kennwort in der Datenbank aktualisiert werden.

Ich habe Code, der alle oben genannten Schritte erreicht. Meine Frage ist Sicherheit. Welche Sicherheitsmaßnahmen muss ich implementieren, während das Kennwort aus dem Formular zum Aufruf von AJAX übernommen wird, und dann Maßnahmen in der Funktion PHP, während es aus der Funktion in die Datenbank übernommen wird?

2
Akel

Ich denke, Sie beziehen sich auf zwei verschiedene Dinge ..

1) Überprüfen der Anfrage. Sie sollten WP Nonces verwenden, um die Anforderung zu überprüfen und gegen XSS zu schützen. Das sollte eine Übung für alle Ihre Formen sein. Sie können auch eine zusätzliche Sicherheitsebene hinzufügen, indem Sie ein reCAPTCHA integrieren.

2) Datenverschlüsselung wenn Sie versuchen, das Passwort zu hacken. In diesem Fall können Sie nur SSL verwenden. Die Verwendung dieser Funktion sichert die gesamte Datenübertragung zwischen Client und Server und geht darüber hinaus über diesen einzigen Vorgang der Kennwortaktualisierung hinaus.

1