web-dev-qa-db-ja.com

AJAXを使用してユーザーを手動でサインインしても安全ですか?

テーマにモーダルログインを追加しています。

最も直接的な方法はテンプレートを作成し、その中にwp_login_form();を含めることです。これにより、CSSまたはjQueryを使用して少し後でカスタマイズできるコアログインがロードされます。

ただし、資格情報を確認するためにページをリロードする必要があります。私の考えは、AJAXリクエストを使用してユーザー名とハッシュされたパスワードを送信し、wp_singon()を介してユーザーをサインインすることでした。

今私の質問は次のとおりです。

  1. これを行っても安全ですか? WordPress自体が何らかの方法でパスワードをサーバーに送信しますが、これが正しいかどうかはわかりません。
  2. これを実行しても問題ない場合は、admin-ajaxを使用する必要がありますか?それともREST-APIもログインを処理できますか?
  3. 上記のすべてに問題がなければ、最後の質問です。 wp_signon()はログインに適した関数ですか? wp_set_auth_cookie()も便利になると思いました。

ありがとうございます。

1
Jack Johansson

バカなことをしないで、関連するAPIを適切に使用すると仮定すると、AJAXログインフォームは「コア」ログインフォームと同じくらい安全です。

データを転送する方法自体はそれほど重要ではありません。 HTTPでさえ、人々やグーグルは安全ではないと主張しますが、おそらく2FA、ワンタイムパスワードで十分に安全であるか、コーヒーショップ/職場のWiFi /ネットワークの代わりに独自のセルラー接続を使用するだけです。いずれにせよ、これは決定するサイトの所有者次第です。

ポイント3に関しては、wp_signonが適切であり、そこからすべての認証とCookieの設定を行う必要があります。

AJAXを実行する際に留意すべきことの1つは、ログインが成功しても、UIの新しいステータスが追加の作業なしで反映されないことです。最も簡単な方法は、おそらくAJAXあまり魅力的ではないアイデア。

あなたが直面する別の障害は、ユーザー/パスワードの不一致などのエラー報告です。ログインエラーをフロントエンドに転送し、他のログイン関連のプラグインが独自のプラグインを追加できるように汎用的な方法で作成する必要がありますエラー。

私がAJAX経由のログインに反対しているように聞こえる場合、私は推測しますが、これは単なる個人的な意見であり、技術的に不可能または安全ではありません。

2
Mark Kaplun