TLDR:
ASP.NET メンバーシップ コントロールを使用してパスワードを管理します。次に、JavaScript 関数を追加してデータを検証します。
パスワードは機密データです。ハッカーは常にそれらを盗もうとするため、プログラマーはこれを防ぐ方法を見つけました。
http://www.codinghorror.com/blog/2007/09/rainbow-hash-cracking.html
http://www.securityfocus.com/blogs/262
これらを読んでいない場合、主なポイントは 2 つあります。
1 - ユーザーが入力した実際のパスワードを保存しない: ハッシュを保存します。ハッシュは、入力文字列を別の出力に変換する暗号関数です。これは一方向の変換です。ハッシュを取得して入力に戻すアルゴリズムはありませんが、同じ入力は常に同じ出力を生成します。(記事では、ハッカーが元の入力を見つけようとする巧妙な方法と、ハッカーがこれらの巧妙なことを行うのを防ぐ方法について説明しています)。また、MD5 をハッシュ メカニズムとして使用しないでください。
2 - 暗号化とセキュリティは非常に複雑であるため、多くの場合、他の人のコードを使用する方が適切です。
ASP.NET には、パスワード管理とハッシュ処理を行うさまざまなメンバーシップ コントロールが付属しています。詳細については、こちらをご覧ください。
http://msdn.microsoft.com/en-us/library/ms178329(v=vs.100).aspx
基本的に、.NET はログイン/パスワードを忘れた場合/パスワードの変更/ユーザーの作成ページを作成します。Microsoft がすべてのコードを作成しているため、ハッシュやレインボー テーブルなどについて心配する必要はありません。
Client-Size 検証に関する質問については、JavaScript を実行する必要があります。ボタンに追加することで、ユーザーが「送信」をクリックしたときに JavaScript 関数を呼び出すことができOnClientClick="return validate();"
ます。次に、関数を作成する必要がありvalidate()
ます (値も変更する限り、関数の名前を変更できますOnClientClick
)。この機能は次のことに役立ちます。
function validate()
{
if( $("#<%= PasswordControl1.ClientID %>").val() != $("#<%= PasswordControl2.ClientID %>").val())
{
alert("Your passwords don't match. Please enter them again.");
return false;
}
if( $("#<%= PasswordControl1.ClientID %>").val().length < 6 )
{
alert("Your password is too short. Please use a longer password.");
return false;
}
// use similar function to test for illegal characters in the password, but most sites will let you enter whatever characters you want (# . ! etc...)
document.forms[0].submit();
}