2012-02-13 6 views
0

私は、ユーザーがパスワードをリセットするための電子メールで送信されたリンクをコーディングしています。私はこのリンクが2つのパラメータを "送信日"と "ユーザーID"を保持します。それはユーザーにパスワードリセットリンクを送信する

www.resetpassword.aspx?senddate="..."&userid="..." 

のように見えますが、私は、これらのパラメータは、暗号化され、私は疑問に思ってすることは、それはいくつかの複雑な双方向アルゴリズムによって暗号化するために、または私はちょうど進コードにASCII文字列に変換することができます必要があるであるべきであると思うかもしれません。

リンクに送信日時とユーザーIDが表示されるようにする必要がありますか?これを行うための一般的な標準はありますか?

+5

** ** ASP.Netフォーム認証**を使用してください。車輪を再発明しないでください。暗号とセキュリティは_ハードなもので、まだ準備が整っていないようです。 – SLaks

+0

あなたはCryptoとSecurityがPITAだと言うことができます。 ;) – McKay

+1

まあ、私は初心者プログラマーです-_-# – pita

答えて

3

私はそれを暗号化しません。ユーザーがパスワードリセットを開始するときには、ランダムなトークンをユーザーの詳細に入れます(データベースがある場合)。そのトークンに対して検証します。パスワードが正常にリセットされたら、dbからそのトークンを削除します。

+0

+1これは正確なタイムスタンプとの組み合わせで十分であるはずです。どちらもリンクで渡すことができます。 –

4

攻撃者が他のユーザーIDを置き換えないように、キー付きハッシュを含める必要があります。

1

クエリ文字列にUserIdを表示しないでください。

データベースにパスワードリセットの記録を残すことができます。ハッシュを作成し、それをUserId、SendDate、ExpiryDateなどに割り当てます。

代わりにクエリ文字列にハッシュを送信し、要求を受け取ったら、それに関連付けられている詳細を調べます。

関連する問題