私はComeoninとGuardianを使用してユーザー認証を実装するサイトで作業しています。Guardianを使用して電子メールの確認URLを作成する
私は電子メール検証を実装中です。私はGuardianの関数を利用してJWTトークンを使ってURLを生成すると考えました。 this postによると、これは妥当な解決策のようです(URLがhttpsを使用し、トークンが比較的短期間で終了する限り)。私は主張としてのメールアドレスを入れている
def email_verification(user = %User{}) do
if (user.email != nil) do
claims = Guardian.Claims.app_claims
|> Map.put("email", user.email)
|> Guardian.Claims.ttl({1, :hours})
{ :ok, jwt, full_claims } = Guardian.encode_and_sign(user, :email_verification, claims)
Zoinks.Mailer.send_verification_email(user.email, jwt)
end
end
:
は、ここで私はこれまでに書いたコードです。アイデアは、ユーザーがリンクをクリックすると、 "電子メール"の要求をデータベースの電子メールアドレスと照合できるということです。
しかし、私はこれが悪い考えであると考えています。特に、リンクが電子メールでクリアテキストとして公開されるためです。
このSO postで概説されているパターンに従って、多分私は乱数を生成し、それをハッシュし(Comeoninを使用して)、それをユーザに対して保存して、代わりにそれを私の主張に入れますか?これはいいアイデアですか、私は完全にオフトラックですか?
ソリューションのこの部分が機能すると仮定して、ペイロードタイプを:email_verification
に設定しても問題ありませんか?電子メールを経由してJWTを送信
しかし、私はこれが悪い考えであると仮定しています。特に、リンクが電子メールでクリアテキストとして公開されるためです。あなたが強力な秘密を使用する場合、あなたのアプローチを使用して問題はないはずです。AFAIK –
正直言ってわかりません - 私はセキュリティに関しては経験がありません – Mitkins
十分なトークンを集めれば電子メール経由)、レインボーテーブル攻撃などの技術を適用することは可能でしょうか?電子メール内のトークンのセキュリティが侵害された場合、同じ設定を使用しているため、ウェブサイトも同様です – Mitkins