web-dev-qa-db-ja.com

フロントエンドパスワードの変更

最初に、このローミングの複製がどこかにあるかどうかをお詫び申し上げます。過去1時間の大部分を解決策を探していたのですが、運が悪かったのですが、キーワードを選ぶのをやめただけかもしれません。

現在、クライアント用のフロントエンドプロファイル環境に取り組んでいます。提供されているオプションの1つは、パスワードを設定および変更する機能です。

確かな答えを見つけることができないように思われることの1つは、そのユーザー入力パスワードに対して何らかのセキュリティー対策をとる必要があるかどうか、それともwp_update_user()関数に組み込まれているかどうかです。

私はもともと私はwp_update_userのuser_passに渡される文字列にwp_hash_passwordを使う必要があると思っていました...しかし、それはパスワードとしてuser_passにハッシュ化されたバージョンを保存していた:P

つまり、デフォルトのワードプレスダッシュボードに関連するものを使用せずに、フロントエンドからユーザーが自分のパスワードを設定および更新できるようにする方法に関するセキュリティ上のヒントはありますか。

だれでも提供できるあらゆる助けを前もってありがとう。

ダッシュボードのパスワード部分のコードのクイックプレビュー:

ユーザーが入力したパスワードを受け取りそれを保存するphpファイルの部分

私はAJAXを介してフォームからパスワードを取得し、$ _POSTを使ってそれを取得し、それをデータベースに配置しようとします。これが単純かどうか、またはセキュリティ対策が必要かどうかを確認してください。 ?

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

フロントエンドでのフォーム入力

<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;'/>

更新 - より具体的な詳細、段階的な計画されたパスワード入力

  1. メールアドレスを確認した後、ユーザーはパスワードを設定するように求められます。
  2. 彼らはそのパスワードをテキスト入力に入れました。
  3. フォーム送信(パスワード入力はこの特定のフォームでの唯一の入力です)では、入力からパスワードをWordPressに接続されているphp関数に渡すためのAJAXがあります。
  4. その後、データベース内のパスワードを更新する必要があります。

上記のステップをすべて達成するコードがあります。私の質問は安全保障です。パスワードがフォームからAJAX呼び出しに渡され、次に関数からデータベースに渡されるときにPHP関数で測定されるときに、どのようなセキュリティ対策を実装する必要がありますか?

2
Akel

私はあなたが2つの異なることに言及していると思います。

1)リクエストを確認しています。 リクエストを検証してXSSから保護するには、 WP Nonces を使用する必要があります。それはあなたのすべてのフォームにとっての習慣です。 reCAPTCHA を統合することでセキュリティ層を追加することもできます。

2)データ暗号化 パスワードをハッシュしようとしたとき。この場合、あなたの唯一の選択肢はSSLを使うことです。これを使用すると、クライアントとサーバー間のすべてのデータ転送が保護されます。さらに、パスワードを更新するというこの単一のプロセスを超えることができます。

1