web-dev-qa-db-ja.com

ユーザー名とパスワードをURLの長いランダムテキストで置き換えることはできますか?

シナリオ

1人の顧客がユーザーの問題に直面しています。彼らは(ウェブ)サービスを年に数回使用しており、資格情報を頻繁に忘れます。標準のパスワード回復手順がありますが、それらの多くは、毎回カスタマーサービスに電話するだけです(所定のパスワードを生成するように要求します)。これにはいくつかの悪い影響があります:

  • カスタマーサービススタッフはすべてのパスワードを知っています。
  • ユーザーはカスタマーサービスを忙しくしています(そして、そうでない場合作業時間これらの通話はお客様にとって高価です).

ご了承ください:

  • ユーザーは自分の資格情報を意味のあるものに変更できますが、このサービスは年に2〜3回しか使用しないので、気にしないでください。
  • 「記憶」チェックボックスを追加することは、法律で禁止されているため(この場合)、オプションではありません。
  • サイトには非常に機密性の高い医療情報が保存されています。
  • ハードウェアデバイス(スマートカードリーダーや指紋リーダーなど)がオプションにならないように、お客様はお金を節約したいと考えています。

質問

これらの問題を解決するために、ユーザーがユーザーごとに一意のIDを生成するように求められている場合、このIDをURLに追加して、そのユーザーを自動的に認証することができます。例えば:

http://www.example.com?user=abcdefg12345

ユーザーは、このIDを好きな場所に保存することを決定できます(デスクトップ上のリンク、ブラウザーのお気に入り、ポストイットにそれを書き留めます)が、お客様自身はその責任を負いません(「覚えておく」機能を提供できないため、法律の)。

私は認証トークン(前述のように、ユーザー名+パスワードタプルの代わりにCookieとして保存されます リクエストごとにユーザー名/パスワードの代わりに認証トークンを使用するのはなぜですか? )ではなく、URLパラメーターについて話しているのではありません。

仮定:

  • この自動生成されたトークンは十分に長く(30〜60文字としましょう)、十分なランダム(大文字と小文字が混在する文字列)です。
  • 基本的なセキュリティ対策が使用されます(不明なトークンとIPブラックリストの非常に長い遅延)。
  • これらのIDを通常の資格情報とは別に保存し、(もちろん)ハッシュし、パスワードとは異なるアルゴリズム/パラメーターを使用します(その長さのため、さらに単純になるか、まだBcryptが必要ですか?!)
  • 認証後にパラメータがURLから削除され、ユーザーがリダイレクトされます。

他に考えられないセキュリティ上の懸念はありますか?これにより認証が弱くなりますか?

私が考えることができる考えられる問題は、URLがブラウザの履歴に保存されていることです...

[〜#〜]編集[〜#〜]

もう少しコンテキスト:顧客は、ユーザーに関連付けられた固定(変更不可)トークンの独自のリストを保持します。彼らが彼のサービスを使用する必要がある直前に、彼は彼らに言及されたリンク(バッチで生成された個人化された電子メール)ですべての電子メールを送るでしょう。私の例では、プロトコルはHTTPですが、実際にはHTTPSです(これを制御できない場合でも)。

追加の質問:このトークンは一時的に役立ちますか?新しい電子メールが送信されるたびに、新しいトークンが生成されます(有効期限は比較的短く、1週間または2週間です)。

8
Adriano Repetti

大きなランダムトークンのエントロピーは、トークンが認証の安全なメカニズムであることを示唆していますが、それに関連する多くの問題があります。

  • トークンはユーザーごとに固定されているため、ユーザーはトークンが危険にさらされている疑いがある場合、トークンを変更できません。
  • トークンは無制限に使用できるため、侵害の機会が増えます。
  • 説明に基づいて、顧客は自分の従業員のトークンを知っている場合があります。お客様が管理する各アカウントのデータは同じである(または同じアクセス制限がある)可能性がありますが、これにより否認防止性が損なわれます。顧客は従業員アカウントを使用でき、誰も賢明ではありません。

プロセスに問題があります

あなたが指摘したように、顧客にパスワードを変更するためにカスタマーサービスに電話をかけることは2つの重要な問題を持っています:

  • まず、それはあなたのビジネスにとって非効率的であり、あなたのビジネスとあなたの顧客にお金をかけています。
  • 第二に、セキュリティの観点から危険です。

カスタマーサービスによるパスワードのリセットを許可すると、アプリケーションのセキュリティにどのように影響するかを検討します。

  • すべてのカスタマーサービス担当者は、任意のカスタマーアカウントのパスワードをリセットし(その説明に基づいて、実際にはsetパスワード)、したがって、その顧客のアカウントの機密情報。
  • 電話によるパスワードリセットの手順によっては、プロセスがソーシャルエンジニアリングの影響を受けやすい場合があります。

ランダムトークンを使用してパスワードリセットを開始する

パスワードを変更する必要があるお客様は、既存のWebアプリケーションを使用してパスワードのリセットを要求する必要があります。これにより、アカウントが登録されている電子メールと、オプションで一連のセキュリティ質問(独自のリスク評価に応じて)を要求する場合があります。次に、ランダムトークンを含むパスワードリセットリンクがその電子メールアドレスに送信されます。このリンクは1回だけ有効で、使用しない場合はしばらくすると期限切れになります。ユーザーがリンクをクリックすると、認証されます。ほとんどのWebアプリでは、この時点でユーザーがパスワードを設定します。あなたのケースでは、とにかくパスワードを忘れてしまうので、ユーザーがパスワードの設定をスキップできるようにすることをお勧めします。

カスタマーサービスに電話してパスワードをリセットする場合、パスワードリセット機能を使用するように指示する必要があります。カスタマーサービスの担当者が電話に留まり、手順をお客様に説明する場合がありますが、重要な点はお客様が自分でリセットを行います。 顧客が自分でパスワードをリセットすると、再度電話をかける可能性が低くなります。

18
amccormack

これは、パスワードをGETパラメータとして渡すこととほぼ同じですが、これは不適切です。ここで説明します: GETとPOST Webアプリケーションのセキュリティの違いはありますか?

また、サンプルURLではHTTPSを使用していません。ネットワークを介して平文でパスワードを送信することも、明らかな理由で悪いことです。

次に、侵害された場合にユーザーはトークンを変更できますか?彼らはこのトークンを失うことはありませんか?つまり、パスワードを書き留めることもできます。

別の方法として、HTTPS経由の基本認証を使用できます。これは標準の認証手法であり、 https:// user:[email protected]/ などのURLの形式で記述できます。ブックマークとして保存されることはないと思いますが、ほとんどのブラウザーは「これらの資格情報を記憶する」機能を提供する必要があります。

15
Volker

提案されたスキームは基本的にOWASP 2番目に最も危険なWebアプリケーションのセキュリティ問題に対応します: 壊れた認証とセッション管理 。 OWAPSサイトは問題を十分に説明しています:

航空会社の予約アプリケーションはURLの書き換えをサポートし、URLにセッションIDを入れます: http://example.com/sale/saleitems?sessionid=268544541&dest=Hawaii

サイトの認証されたユーザーが、友人にセールについて知らせたいと考えています。彼は自分のセッションIDも提供していることを知らずに上記のリンクに電子メールを送信します。彼の友人がリンクを使用するとき、彼らは彼のセッションとクレジットカードを使用します。

また、ユーザーが入力した各URLは、ブラウザメーカーや優先検索エンジンに送信される可能性があることも考慮してください( Google Chromeプライバシーポリシー を参照)。

6

これは amccormackの答え の拡張です。

お客様がメールアドレスを入力してログインを開始できるようにします。ユーザーがメールアドレスを入力したら、それを使用してユーザーがログインを許可されていることを確認し、一時的なトークンをユーザーのメールアドレスに送信しますこれは、適切なナンスを含むWebリンクの形式、またはユーザーが次のフォーム(ウィザードスタイルのログイン)のフィールドにコピーする必要があるキーの形式である可能性があります。入力したトークンがその電子メールアドレスに送信されたトークンと一致し、それがまだ有効であることを確認します。グレイリストの場合、最初の数時間は必ず有効にするようにしてください。また、トークンを再利用できないように、1回限りの使用を許可してください。

この場合、ユーザーはサービスに特別なことを覚える必要はなく(自分のメールアドレスとそのメールアカウントへのアクセスのみが必要です)、このスキームは他の純粋なリセットパスワードよりも安全性が高くなります。あなたが思いつくことができる電子メール方式。

また、将来的には、SMS(または考えられる他の任意の配信チャネル)を介したトークン配信を許可することで、これを拡張できます。トークン配信コード以外のすべてに最小限の変更を加えます。

4
a CVn