3

YahooGoogleなどの一部の Web サイトでは、Ajax を使用してユーザー名/パスワードが間違っているかどうかを確認します。誰でもローカルの JavaScript を変更して、だましてユーザー名/パスワードが正しいと思わせることができるため、明らかにサーバー側の認証が必要です。サーバーが同じユーザー名/パスワードを2回チェックしないので、これがどのように効率的に行われるのか疑問に思っていますか? ユーザーが Web サイトにログインする次のシナリオを考えてみましょう。

  1. ユーザーがログインページに来る
  2. ユーザーがユーザー名とパスワードを入力し、送信をクリックします
  3. 入力されたユーザー名/パスワードが正しい場合、サーバーはAjaxを介してクライアントと通信します
  4. サーバーは、ユーザー名/パスワードが正しいかどうかを返信します。この例では、
  5. が送信され、<form>断続的なページが入力された値を取得POSTし、サーバー側でそれらを再度処理して、ユーザー名/パスワードが正しいかどうか、およびセッションで変数が設定されているかどうかを確認します

ステップ 5 で、サーバーは、ステップ 3 と同じユーザー名/パスワードが正しいかどうかを再度確認します。ステップ 3 の結果をキャッシュする方法や、プロセスをより効率的にする方法はありますか? また、ステップ 3 でサーバーにはすでにユーザー名とパスワードが送信されていますが、それによってプロセスが加速するかどうかはわかりません。

ユーザー名とパスワードの保存に MySQL データベースを使用しています。

4

3 に答える 3

2

ステップ 3 で、onsubmitハンドラーは AJAX リクエストをサーバーに送信して資格情報を検証し、 (ハンドラーを呼び出すか、ハンドラーから false を返すことによって) 通常のフォーム送信を防止するため、ステップ 5 は発生しません。.preventDefault()JavaScript が無効になっている場合は、onsubmit ハンドラーがなく、代わりに通常のフォーム送信が行われます。

ステップ 4 で「正しい」応答を受け取った場合、AJAX ハンドラは新しいページにリダイレクトできます。「正しくない」応答の場合は、ログイン ページにとどまり、フォームをクリアして、エラー メッセージを表示します。

于 2013-02-27T01:18:39.453 に答える
1

私のコメントが言うように、私があなたのプロセスに完全に同意するかどうかはわかりません.

  1. ユーザーがログインページに来る
  2. ユーザーがユーザー名とパスワードを入力し、送信をクリックします
  3. Jquery は onclick アクションをトリガーし、ユーザー入力を取得し、php に ajax リクエストを送信し、php はサニタイズして、資格情報が見つかるかどうかを確認するためにクエリを実行します。
  4. php の場合、セッションと Cookie を設定し、ajax の結果を返します。
  5. 資格情報が正しくない場合、php はその問題も処理します。

または 、ajax を使用したくない場合

  1. ユーザーがログインページに来る
  2. ユーザーがユーザー名とパスワードを入力し、送信をクリックします
  3. フォームはphpページにルーティングされ、ユーザー資格情報についてデータベースにクエリを実行し、それらが正しい場合は、セッションとCookieを設定し、正しいLogin.phpにリダイレクトします
  4. そうでない場合は、errorLogin.php にリダイレクトします。
于 2013-02-27T01:08:09.167 に答える
1

ポイント 3 で、JS はフォームをサーバー側の処理に送信し、応答を待機する必要があります。JS が無効になっている場合、フォームは正常に送信されます。

于 2013-02-27T00:59:04.257 に答える