ユーザーはパスワードを必要としません

さびたロック


多くの場合、サイトの開発の最初に行われる最初のアーキテクチャ上の決定の1つは、メールとパスワードを使用してユーザーを承認することです。 この束は私たちの頭の中にしっかりと埋め込まれています。私たちは、なぜ人々にパスワードの作成を強制するのか、すでに考えています。 これに慣れています。


しかし、ユーザーがパスワードを必要としないかもしれません。


考えられる解決策の1つはOAuth 2.0を使用することですが、すべてのユーザーがソーシャルネットワークアカウントを持ち、リソースでそれを使用したいというわけではありません。


しかし、その後、パスワードを取り除く方法は? この質問に、私は記事で答えようとします。


問題は何ですか?


唯一の安全なパスワードは、覚えられないものです

トロイハント

パスワードだけでもすでに問題です。 それはあなたにとってもユーザーにとっても有益ではありません。


サイト所有者にとって、パスワードはそのストレージがシステムに追加の脆弱性を作成するという点で有益ではありません。 ハッシュアルゴリズムがどれほど強力であっても(そして、神はそれを使用しないでください)、遅かれ早かれ、それは新しいGPUにとってささいなものになり、後にCPUで使用されるようになります。 また、データベースがネットワークにリークした場合、これはあなたとあなたの訪問者に大きな打撃を与えます。 パスワードがなければ、ベースは非常に少なくなります。


サイトへの訪問者にとって、パスワードはさらに困難です。 経験の浅いユーザーは再び「通常の」パスワードを使用するため、パスワードを紛失するリスクが高まります。 また、上級ユーザーは、サイトの特別なパスワードを作成するか、パスワードマネージャーを使用する必要があります。


それ自体では、パスワードマネージャーの現象は、松葉杖であり、パスワードの広範な使用の非需要と非効率性をすべて示しているはずです。


さらに、ユーザーに定期的に変更を強制したり、特殊文字の使用を禁止/強制することで、ユーザーの生活をさらに汚染することができます。


どうする?


答えはパスワードを使用しないことです。 ユーザーのメールを知るだけで十分です。


サイトに登録すると、ユーザーメールに何らかの形で結び付けられます。 ユーザーがアカウントの所有者であることを確認する手紙を彼女に送信します。 パスワードをリセットするために使用します。


パスワードのリセットはすでに矛盾のように聞こえます。 結局のところ、新しいパスワードを設定するには、メールを受信するだけです。 それだけです では、なぜユーザーにパスワードを考えさせ、それを変更し、あなたを喜ばせる文字だけを使用させたのですか?


実際、ユーザーを認証するには、アカウントを確認するときのように、生成されたリンクを含む電子メールをユーザーに送信するだけです。 これは、ユーザーを承認するのに十分です。


はい。最新の電子メールサービスは、通常のシール付きWebサイトよりも何倍も保護され、攻撃に対して準備されています。 パスワードの保存と保護を専門家に任せます。


解決策


データベースとしてPostgreSQLを使用した単純なサイトの例を考えてみましょう。


2つのテーブルで十分です(フィールドの最小セットを使用):


ユーザー


フィールド名データ型属性
idserialPRIMARY KEY
emailvarchar(320)UNIQUE

sign_in_requests:


idserialPRIMARY KEY
emailvarchar(320)
tokenuuidUNIQUE
request_ipvarchar(45)
activated_attimestampNULLABLE
expired_attimestamp

:



:


  1. email .
  2. sign_in_request, : https://example.com/signin/callback/email/{{token}}.
  3. , token'.
  4. , , , email ( Brute Force), , .
  5. activated_at=now(), .
  6. , -, , cookie / JWT / etc.

, , 10 .


?


:



:




, , , , .


: https://pixabay.com/en/padlock-grunge-rusty-rusting-76866/


Source: https://habr.com/ru/post/J341164/


All Articles