web-dev-qa-db-ja.com

あいまいなディレクトリで公開されているWebサイトは、ログインの背後に配置するのと同じくらい安全ですか?

機密のビジネス情報を含むクライアント用のマイクロサイトを作成するとします。起動を承認するために、クライアントがアクセスできる場所にこれを配置する必要があります。

このマイクロサイトをログインの背後に配置した場合、誰もコンテンツを偶然見つけて侵害することができないことが保証されます。しかし、前述のパスワードと同じ「強さ」の名前を持つ、非公開でインデックス付けされていないディレクトリに公開するとどうなるでしょうか。 議論のために、「非公開でインデックス付けされていない」とは、手動または自動でどこからでも、またはどこからでもリンクされない、または同じドメイン上のWebサイト検索によってインデックス付けされないことを意味します。また、独自のサブドメインにも配置されないため、DNSクロールは問題になりません。

私の最初の本能は、これは単にあいまいさによるセキュリティであり、誰かがそれにつまずく可能性があるためにはるかに安全性が低いと言います。でも、考えてみたらわかりません。これが私の理解です:

  • パスワードとURLの両方に辞書の弱い2ワードの文字列を使用しても、推測可能なオプションは数十億あります。それをURLに配置しても、そのリストは不思議なほど減少しません。
  • ログインページにはブルートフォース保護機能があるため、攻撃者は楽観的に20回の推測を試みます。 URLの推測はサーバーのDoSまたはスパム保護によって捕捉される必要があり、攻撃を予測している場合、404を生成する推測が200になる可能性がありますが、数十億のオプションに対して統計的に有意ではありません。
  • ログインページはWebサイトからリンクされています。これは、攻撃者が勝つための目に見える壁です。それは攻撃する価値のある何かが存在する証拠です。ただし、URLの推測は盲目的です。正しいドメイン(およびサブドメイン)にいて、何万もの誤った推測を行った後でも、まだ何かを変えることができるという信念に基づいて操作する必要があります。
  • URLには、外部からインデックス付け/スパイダリングされる可能性があります。ただし、ほとんどの立派なスパイダーはサイトで「推測」せず、リンクをたどるだけです。悪意のある「推測」スパイダーは、ポイント2と同じDoS/spam保護によって捕捉されます。

私が言うことができることから、2つの間の唯一の有意義な違いは、心の平和が想像されます。上記の点に基づいて比較できるように見えても、URLがつまずかれる可能性は人々を緊張させ、ログインは物事を安全に感じさせます。ただし、URLオプションはfeelsのように、安全性はかなり低くなります。何を考慮していませんか?


EDIT:ポップアップする多くの有効な人的エラーの懸念。この質問は、ある程度の人間の安全を確保するセキュリティを実装しているクライアントから発想を得たものです。キーフォブによるVPNログイン、画面調光器、5分間のスリープタイムアウト、ソーシャルメディアのブラックアウトなどです。ショルダーウォッチや「おっと!ツイッターへのリンクを貼った!」みたいな。私はより体系的な答え、または「人間が台無しにする」よりも少なくとも1つ満足できる答えを探しています。


EDIT 2:可能性のある重複 を指摘していただきありがとうございます。私見、それぞれに個別の質問としての価値があると思います。この質問では、画像のセキュリティについて具体的に取り上げ、そのデータを保護およびエンコードする別の方法(base64エンコードなど)について詳しく説明します。この質問では、秘密性とあいまいさの概念をより具体的に取り上げ、問題のデータの種類に関係なく、ログインがURIよりも優れている理由に適用します。さらに、ここで受け入れられた回答が私の特定の質問を@SteveDLの以下の素晴らしい回答ほど深くまたは完全に説明しているとは思いません。

49
CodeMoose

保護されていない隠されたスペースよりも、認証されたパブリックスペースの方が望ましい理由について、もう少し抽象的なレベルで1点説明します。他の答えはすべて完全に良好であり、回避するためによく知っておくべき複数の攻撃をリストします。

正式なトレーニングを受けているすべての人は、 Open Designセキュリティ原則 のある時点で聞いたことがあるはずです。それは、システムがその機能の秘密である設計と実装の詳細に依存してはならないことを述べています。秘密のパスワードと秘密のURLの違いは何ですか?

パスワードは認証シークレットです。それらは、認証するために挑戦的なエンティティにそれらを提供する挑戦されたエンティティによって知られています。両方の当事者には、ストレージの形式と通信チャネルが必要です。パスワードを盗むには、3つのいずれかを侵害する必要があります。通常:

  1. ユーザーを捕らえるか、パスワードを明かすよう強制する必要がある
  2. サーバーをハッキングして、ハッシュされたバージョンのパスワードを公開する必要があります。
  3. ユーザーとサーバーの間のチャネルの機密性を侵害する必要があります

認証を強化する方法はたくさんあります。最初に、さまざまなストレージ要件と送信チャネル、したがって攻撃チャネルと異なる認証要素を追加することから始めます(権限分離の原則)。

パスワードに対するすべての攻撃経路では、URLは既知(2および3)または取得可能(1)であるため、あいまいなURLはパスワードよりもbetterになりにくいとすでに結論づけることができます。 )。

一方、不明瞭なURLは、はるかに一般的に操作されます。これは主に、インターネットエコシステム内の複数の自動エンティティと手動エンティティがURLを定期的に処理しているためです。 URLの機密性は、それが目に見えないところに隠されているに依存しています。つまり、公開されている既知の商品であるかのように、これらすべてのサードパーティによって処理される必要があります。全部の。これは複数の問題につながります:

  • これらのあいまいなURLを保存、送信、およびコピーできるベクターは、はるかに多数あります
  • 伝送チャネルは機密保護する必要はありません
  • 保管スペースは、機密性や完全性を保護する必要がなく、データ漏洩を監視する必要もありません
  • コピーされたURLの存続期間は、元のクライアントとサーバーのプリンシパルの制御から外れている

つまり、秘密を公に扱う必要がある場合、すべての制御の可能性がすぐに失われます。 第三者がそのことを理解できない場合にのみ、明白な場所に何かを隠す必要があります。URLの場合、URLはインターネットエコシステム全体(クライアントのブラウザー、さまざまなDNSサーバー、独自のWebサーバーを含む)で機能することができるのは、それが理にかなっている場合のみです。そのため、敵がそれを使用してあなたのアドレスを指定できる形式で維持する必要があります。サーバ。

結論として、オープンな設計原則を尊重してください。

69

理論的に話しているため、ランダムなURLだけでは機密データを保護するのに十分ではないいくつかの理由を次に示します。

  • URLはブックマークできます。
  • URLはブラウザーの履歴(公開キオスク)に記録されます。
  • URLはアドレスバー(ショルダーサーファー)に表示されます。
  • URLがログに記録されます(サードパーティのプロキシを考えてください)。
  • URLはリファラーヘッダーを介してリークされる可能性があります

箇条書きのいくつかについてはわかりません。

この潜在的なウェブサーバー/ウェブサイト/プラットフォームは確かにディレクトリのファジング保護を備えていると言っていますか、それともこれは仮説ですか?

それでも、上記のアイテムから保護することはできません。

54
k1DBLITZ

ただし、URLの推測は盲目的です。正しいドメイン(およびサブドメイン)にいる必要があります

ただし、ほとんどの立派なクモはサイトで「推測」せず、リンクをたどるだけです。

主要な検索エンジンが立派ではないと考えることは防御できる立場ですが、リンクをたどる以上のことを行うという事実は変わりません。特に、検索エンジンはDNSエントリを列挙できるので、サブドメインが存在するだけでリスクが生じます。

人々がどこからもリンクを貼ったことがないことを人々が誓い、Googleがサイトにリンクしているページを返さない場合でも、多くのものがGoogleに行き着きます。

これは、一般に人々がURLを機密情報として扱わず、URLがサーバー、ブラウザ、プロキシログなどのあらゆる種類の場所に表示されるという問題に加えてです。 URLは、パスワードよりもはるかに多くのブラウザ拡張機能で認識され、使用されます。 「非表示」のサイトに発信リンクがある場合、URLはReferer:ヘッダー。

また、誤った構成により、非表示のサイトにリンクが表示されるリスクもあります。たとえば、非表示のサイトがローカル検索機能を提供するサイトでホストされている場合などです。

ログインページはWebサイトからリンクされています。これは、攻撃者が勝つための目に見える壁です。それは攻撃する価値のある何かが存在する証拠です。

それは意味がありません。まともなソフトウェアとランダムに生成されたパスワードを使用し、追跡する価値のある攻撃面はありません。対照的に、隠しディレクトリは攻撃に値するもののようには見えず、公開されているもののように見えます。

秘密のURLは特にリスクが高くなります。URLが誤って漏洩し、検索エンジンがそれを発見した場合、サイトのコンテンツ全体がその検索エンジンを通じて公開されるからです。パスワードは破滅的なほど失敗することはありません。パスワードが漏えいした場合でも、誰かがデータのダウンロードを開始するために自発的なアクションを実行します。誰でも見ることができるように公開する機構は自動的には開始されません。

人々(=>開発者=>情報をログに記録するアプリケーション)がURLを非公開であると見なさないため、他の多くの異なる方法があるkeyが漏洩する可能性があります。しかし、あなたが正しく認識しているのは、パスワードは本質的にあいまいさによるセキュリティの形式であることです。そして、概念的には、あなたが提案しているスキームには何の問題もありません。あなたが提案しているスキームが意図されていない方法でシステムを誤用しているという事実のために、唯一の問題が導入されます。

パスワードとURLの両方に辞書の弱い2ワードの文字列を使用しても、推測可能なオプションは数十億あります。それをURLに配置しても、そのリストは不思議なほど減少しません。

確かに、しかしそれはそれをより安全にしません。

ログインページにはブルートフォース保護機能があるため、攻撃者は楽観的に20回の推測を試みます。 URLの推測はサーバーのDoSまたはスパム保護によって捕捉される必要があり、攻撃を予測している場合、404を生成する推測が200になる可能性がありますが、数十億のオプションに対して統計的に有意ではありません。

攻撃を予測している場合は、アプリケーションのタイプに対するブルートフォース保護のベストプラクティスに等しく制限するでしょう。確かに、それは正しく行われれば悪くはありませんが、それは間違いなく良くはなく、多くのことを行う必要があるため、おそらくもっと悪くなりますよりカスタム作業。

ログインページはWebサイトからリンクされています。これは、攻撃者が勝つための目に見える壁です。それは攻撃する価値のある何かが存在する証拠です。ただし、URLの推測は盲目的です。正しいドメイン(およびサブドメイン)にいて、何万もの誤った推測を行った後でも、まだ何かを変えることができるという信念に基づいて操作する必要があります。

確かに真実であり、このために、一部の企業がイントラネットのログインページをわずかに予測できないURLに隠しているのを見てきました。信頼できるものですか?絶対にありません。特定の目立たない攻撃者を阻止する可能性のあるものですか?絶対に。

いずれにしても、これは、最初の段落で説明した大規模なトレードオフと比較して、それ自体では限られた利点しか提供しません。

URLには、外部からインデックス付け/スパイダリングされる可能性があります。ただし、ほとんどの立派なスパイダーはサイトで「推測」せず、リンクをたどるだけです。悪意のある「推測」スパイダーは、ポイント2と同じDoS/spam保護によって捕捉されます。

スパイダーの唯一の問題は、URLがリンクされている場所のどこかにランダムキャッシュが見つかり、他のユーザーが見つけやすい方法でインデックスを作成する可能性があることです。ランダムな推測は確かに問題ではありません。

3
David Mulder