web-dev-qa-db-ja.com

サブドメイン分離のアイデア

ブログプラットフォーム-example.comについて考えてみましょう。信頼できないコンテンツをsubdomain1.example.comsubdomain2.example.comでホストしたいと考えています。

デフォルトでは、同じOriginポリシーはこれら2つのサブドメイン間の通信を許可しません。 SOP以外に、subdomain1.example.comsubdomain2.example.comのプロパティを読み取ったり操作したりできないようにするために必要なセキュリティ上の考慮事項は何ですか?

たとえば、各サブドメインのセッションCookieをその特定のサブドメインにスコープすることができます。

2
user2688214

最新のWebテクノロジーはcompleteドメイン名を1つのセキュリティ境界として使用していますが、HTTP CookieはRFCに根ざしていない古いテクノロジーですが、歴史と貧しい孤立の世界から進化しました。

Cookieは、正確なドメイン名の一致、またはスーパードメインによって分離できます。そのWebページで、私のブラウザは、ドメイン_stackexchange.com_のスーパードメインであるCookieの束があることを通知します。ページ(_https://security.stackexchange.com/questions/227598/ideas-for-subdomains-isolation_)。

これらのCookieの共有はtheホスティングユーザーが提供する問題のある問題であり、恣意的で完全に安全でないHTTPコンテンツです

  • hTMLコンテンツ(またはHTMLとして表示される一般的なXML/SGML)を意味するHTTP content-typeヘッダーで提供されるコンテンツ、
  • または、プレーンテキストであるがブラウザによってHTMLとして「盗聴」される可能性のあるcontent-typeを持つコンテンツ(これまで、HTML HTTPブラウザにはそのような「癖」があることが知られているため)

スーパードメインで。

これが唯一の問題ではありません。既存のCookieが読み取られるだけでなく(HttpOnlyフラグによって阻止される可能性があります)、これらのCookieがない場合でも、アクティブなHTMLコンテンツがスーパーで共有される新しいCookieを設定する可能性があります-ドメイン。これらのCookieはスーパードメインに関連付けられます。

HTTPプロトコルの極端な弱点は、HTTPサーバーのみがブラウザにCookieの範囲を設定するときに、Cookieの範囲を通知し、ブラウザがそれを繰り返すことはないことを意味します情報。これは、HTTPサーバーがCookieのオリジンを判別する方法がないことを意味します:どの完全なドメイン名がCookieを設定し、そのスコープは何ですか。ブラウザーにはその情報があり、エンドユーザーはそれにアクセスできます(たとえば、ページインスペクターを使用すると、ページの読み込み中に設定または送信されたすべてのCookieのリストを表示できます)が、サーバーにはありません。

[注意:

Googleは_googleusercontent.com_を設定しました。理由:すべての完全な(HTMLフラグメントではなく、Webページ全体)ユーザーコンテンツが、ブラウザーによって信頼されているドメイン(_webcache.googleusercontent.com_)から完全に異なるドメイン(_google.com_)から提供されている(SOMECODE)__):Webクライアントがこれらのドメインを混同する可能性はゼロです。エンドユーザーのみが(存在しない)_https://webcache.googleusercontent.com/zfzefzef_に移動できます

ドメイン証明書が原因であることを確認します

_CN = *.googleusercontent.com
O = Google LLC
L = Mountain View
S = California
C = US
_

(別のヒントは、証明書内のaltNamesのリストであり、その多くはGoogleのものとして非常に認識可能です。)

これは、ドメインが別のエンティティと同じエンティティによって所有されていることをエンドユーザーが特定するために必要な作業です。

エンドノート]

クライアントはブラウザに特定のCookieのソースであるエンティティを通知しないため、サーバーは、サブドメインによって設定された同じ名前のCookieによって混乱する可能性があります。複数のドメインに同じ名前のCookieがある場合、ブラウザーの動作は予測できません。複数のCookieヘッダーがブラウザー依存の順序であるか、すべてのCookieが1つのヘッダーに連結されています。 (_cookie_name_RANDOM_SEQUENCE_のように)Cookie名の一部を攻撃者が予測できないようにすることで、少なくとも複数のCookieの問題の連結を回避できますが、Cookieの発行元は認証されません。

結論:安全のためにdonot内部(サブドメイン内)の任意の場所でアクティブな可能性のあるHTMLコンテンツ(Javascriptが動作するもの)を許可します信頼できるドメイン

1
curiousguy