ログインページは、あらゆるWebサイトの出発点であり、ユーザーを認証するための最も重要なものです。
Webアプリケーションの構築を開始するときは、柔軟なインターフェイスを備えた安全なログインページを設計する方法について、多くの時間をかけて考えます。
ログインページの作成を開始するときに考慮する一般的なアドバイス、ヒント、または「必須」のリストはありますか?私のDBMSはInformix、MySQL、またはSQL Serverの可能性があるため、一般的なアドバイスが必要です。
さらにいくつかあります:
できる限り、車輪の再発明を避けてください。できる場合は、システムをプロジェクト間で再利用して改善し、毎回ピアリベイブを行ってください。
パスワードを隠しておきます-ページにテキストを表示しない、HTTPS経由で送信する、バックエンドに平文でログインしない、データベースに安全に保存する。基本的に、パスワードがどこにあっても、プライバシーを維持する必要があります
エラーをログに記録します。ユーザーにあまり多くの情報を表示しないでください。特に「不正なパスワード」と「不正なユーザー名」-有効なユーザー名を発見したことを攻撃者に伝えないでください。具体的には「無効な資格情報」または「不正なユーザー名/パスワード」を伝えてください。しかし、バックエンドで問題を記録しますか?これはユーザー名の繰り返しですか?現在の失敗の特徴は何ですか?ハイエンドシステムでは、動作が攻撃のような性質を示した場合、管理者に注意を促し、警告を発するものがあります。
ユーザーがログインしていることをページに明確に示し、リンクまたはページに利用規約の表示を提供します。弁護士/顧客にこれを吟味してもらってください。
パスワードロックシステムとユーザーに適したものを検討してください。最適な再利用のために、ロックアウト前の#不正なログインと再有効化前のロックアウトの分数の構成設定があります(「手動リセットのみ」の設定を使用)。
パスワードリセットの機能を慎重に検討してください。これらを安全に作成することは困難です。
ユーザーの認証とサーバーの認証に必要な可能性のあるものを検討します。多くはSSL /証明書に精通していないため、ユーザーがサイトのパスワードをハッカーに提供するのを最小限に抑えるにはどうすればよいでしょうか。
現代版:
マーケティングページを含むサイト全体にHTTPSを使用します。 HSTSヘッダー を追加します。
ターゲットユーザーがコンピュータに精通している場合は、従来のユーザー名とパスワードによるログインを完全に避けてください。マルチプロバイダー OpenID 、または Facebook Connect または Googleのログイン などの優れたフェデレーションログインシステムにオフロードします。
より高いセキュリティが必要なサイトの機能(重要なもの) CSRFトークンを使用 。
フィッシングはまったく別の問題です。
独自のログインページの作成を完全にスキップする...オプションがある場合代わりに、クレームベース認証とIDフェデレーションを使用します。 http:// Claimsid.codeplex.com/ (そのリンクは.NETに固有ですが、CBAに関する優れた入門書です)。
このページには、WebサイトでTLSを安全に使用する方法に関する多くの情報が含まれています。認証システムには他にも懸念事項がありますが(パスワードの保存、セッション管理など)、これでも十分な情報が得られます。
https://www.owasp.org/index.php/Transport_Layer_Protection_Cheat_Sheet
ジェフの4番目のポイントを拡張する-
また、
他の人による素晴らしい点。 SQLインジェクションに留意し、それを防ぐためにパラメーター化されたクエリ/ストアドプロシージャを使用することを追加したかっただけです。