0

だから私はユーザーに自分のメールアドレスを確認してもらいたいシンプルなユーザーシステムを書いています(他のほとんどすべてのサイトのように)。ユーザーを確認するために使用されるこの文字列を生成するための最良の方法は何だと思いますか?

最初は使用するだけだと思ってuniqid()いましたが、それについてもっと考えているので、どのような種類のセキュリティ上の懸念を念頭に置く必要があります。

PS。準備付きのPDO(MySQL)を使用しています。db操作で他にどのようなサニタイズを行う必要がありますか?

4

2 に答える 2

1

外部で再現するのが十分に難しい文字列を生成できるようにする必要があります。たとえば、ユーザーの電子メールアドレスの単純なSHA1ハッシュは複製が容易であり、適切ではありません。

ただし、ハッシュ関数の動作方法により、常に「秘密」をスパイクすることができ、それで十分に機能します。たとえば、この目的で使用される長いランダムな文字列定数を生成し、それをユーザーの電子メールアドレスに追加してから、ハッシュします。検証トークンとしてランダムな文字列を生成することもできます。

どの方法を使用する場合でも、ユーザーに送信した検証トークンを必ずレコードの列に記録し、この列にテーブルのインデックスを付けて、取得時間を短縮してください。後でこれを行うことになります:

SELECT * FROM users WHERE verification_token=?

そのトークンに一致するエントリを見つけることができれば、それが有効なユーザーであることがわかり、検証済みとしてフラグを立てることができます。

于 2012-11-02T15:58:15.620 に答える
-2

ユーザーにとって最善の解決策は、電子メールによる確認を使用しないことです。これは非常に古くて退屈な技術です(多くのユーザーが10minutemailを使用しています)。

于 2012-11-02T15:37:00.307 に答える