2

パスワードで保護されたWebサイトのログインルーチンを作成しています。キャッチしたい特定のユーザー入力エラーの例と、それらに対処する方法を示してください。

これは面接の質問です

私はこれに次のように答えました

クライアント側のエラーとサーバー側のエラーの両方を追加する必要があります。

クライアント側エラー:ユーザーがユーザー名フィールドに何も入力していないかどうかを確認します。javascriptを使用して「ユーザー名が入力されていません」というメッセージを表示できますサーバー側エラー:ユーザー名がデータベースに存在しないかどうかを確認し、エラーメッセージをスローできます。入力したユーザー名のデータベースでパスワードが一致していないか確認できます。

誰でも提案できますか。これらは私たちが捕まえることができる唯一のエラーですか?

4

2 に答える 2

4

構文的に無効なユーザー名 (空、短すぎる、または長すぎる、スペース、引用符、シェル/SQL メタ文字などの無効な文字が含まれている、構造的に無効、つまりドットまたは数字で始まる)、および構文的に無効なパスワード (短すぎる) を検討します。または空である、「単純すぎる」、またはユーザー名と等しい)。これらすべてのケースで、JS を使用してクライアント側を検証し、「新しいユーザーの作成、ユーザーとパスワードの選択」ビューに同じコードを再利用できます。

サーバー側では、バックエンド接続エラー (つまり、ユーザーが存在するかどうかを判断できない -- 厳密にはユーザー エラーではありませんが、それでもここで管理したい場合があります)、ユーザーが見つからない、パスワードが一致しない、そしておそらく "ログインが無効になっています」(これは、自動作成ユーザー Web サイトでは非常に一般的です。ログインは存在しますが、電子メールで送信されたリンクをクリックして検証する必要があります。リアルユーザーデータベースの詰まりやチャーンを避けるために、別々に保管してください)。もちろん、特別な無効状態とメッセージ (「会費は期限切れです」) を追加することもできます。他の追加の「エラー」と「警告」がここに追加される場合があります。たとえば、「通常の IP ブロックからログを記録していません [、このセキュリティの質問に答えていただけますか?]」などです。

于 2012-06-23T09:35:00.527 に答える
2

IMO、主な問題 (ユーザーとパスワードのデータベースとしてSQLを想定) はSQL インジェクションです。たとえば、特定のユーザーを管理者アクセスとして追加します。

それを処理するには、サーバー側のライブラリを使用してすべてのユーザー入力を処理することができます — 自分でやろうとするのではありません.

于 2012-06-23T08:34:56.793 に答える