なぜのvalidateUserはより戻りませんか?
-
23-08-2019 - |
質問
私は標準の.NETメンバシッププロバイダを使用して、誰かがそれに光を当てることができれば、私は見たいと思っています。
のvalidateUserは、真または偽を返す呼び出します。今の方法は、ユーザー名とパスワードを受け付けているので、1が戻り結果が無効なユーザー名またはパスワードを反映することを理由でしょう。我々は、さらにそれを掘り下げている場合しかし、我々はそれがまたIsLockedOutとIsApprovedをチェックして見つけます。
public override bool ValidateUser (string username, string password)
{
MembershipUser user = GetUser (username, false);
/* if the user is locked out, return false immediately */
if (user.IsLockedOut)
return false;
/* if the user is not yet approved, return false */
if (!user.IsApproved)
return false;
......
私のアプリケーションでは、私は私自身の手段のためのIsApprovedを利用するようにしたいと思います。単に私はまだブール結果に拘束していますので、自分のプロバイダが動作しません転がります。ユーザーを作成すると、私たちが必要とするすべての情報を提供し、なぜないのvalidateUser?私は何かが足りないのですか?
解決
私は何を見ていることはセキュリティ上の決定であることを期待して - 。返される情報を制限することによって、彼らが悪意のある第三者に情報を提供していない
あなたがウェブサイトに侵入しようとし、シリル・クラッカーだと想像します。
シナリオ#1: パスワード「パスワード」で、ユーザ名「admin」を入力しようとすると、システムが無行くわかりますありません。あなたが持っている唯一の情報は、管理/パスワードが有効な組み合わせではないということです。
シナリオ#2: パスワード「パスワード」で、ユーザ名「admin」を入力しようとすると、システムはその名前のユーザーが知られていないことを示しています。あなたがの1を見つけるまでは、の知られている別のユーザー名をしようとして続けることができます。
シナリオ#3:あなたがパスワードを「パスワード」で、ユーザ名「admin」を入力しようとすると、システムがパスワードなしが無効であることを示しています。突然、あなたは「管理者」が有効なユーザーであることを知っています。あなたは便利な何かを学んだ、とあなたが推測保つために必要なすべてのパスワードです。
シナリオ#4:あなたがパスワードを「パスワード」で、ユーザ名「admin」を入力しようとすると、システムはアカウントがブロックされていることを示しています。さて、あなたは、有効なユーザ名とパスワードを知っているし、アカウントがブロックされていること。あなたは、後で戻ってきて、もう一度試すことができます。
有効だものに豆をこぼさ、そして何ではない、ののおしゃべりシステムとして知られており、彼らは簡単に破ることができますよう、彼らは、正当な理由のために安全ではないと考えられているシステムを。
これは便利です。希望ます。