2011-01-18 12 views
10

ウェブアプリケーション(特に37Signals 'Basecamp)の増加に伴い、すべてのユーザ/アカウントにサブドメインが割り当てられています。私はそのようなアプローチの賛否両論が何であるか疑問に思いました。これを行う特別な理由はありますか?これは単に美容的な機能ですか?これは、例えば、スケーラビリティの向上とセキュリティの向上を可能にしますか?ウェブアプリケーション内のサブドメインの長所/短所

+0

これは便利です:http://myhosting.com/blog/2010/08/benefits-subdomains-ezinearticles/ –

+0

ありがとうハリー。しかし、あなたが言及しているリンクは、従来のサブドメインの(より多くの)伝統的な使用について言及しており、特にWebアプリケーションにおけるサブドメインの動的作成については言及していません。 –

答えて

6

私はそれが同じ起源の方針に関連しているかもしれないと思う。 2人のユーザーのメンバーページが異なるサブドメインにある場合、ブラウザは1つのサブドメインのスクリプトが別のサブドメイン内のドキュメントにアクセスするのを防ぎます。 Malloryがサイト(mallory.example.org)を登録して悪質なスクリプトを置くと、そのスクリプトはAliceのサイト(alice.example.org)のDOMを変更できなくなります。彼らが代わりにパス(example.org/malloryとexample.org/alice)を使用していた場合、SOPは機能せず、MalloryのスクリプトはAliceのページであらゆる種類の悪いことを行うことができます。 Malloryに戻る。

このSOP保護は、両方のサブドメインが同じIPを解決する場合でも機能します。URLのホスト部分が異なる限り、現代のブラウザはクロスドメインスクリプティングの試み(およびその他の潜在的に危険なもの)をブロックします。

+0

入力いただきありがとうございます。つまり、明確なセキュリティ上の利点があることを示唆しています。 –

2

私たちは、自分のブランドを見るのが好きという唯一の理由でこれをやっています。 Conversion Supportお客様は、コントロールパネルのブランディング用のサブドメインを選択して、ロゴとカラーでカスタマイズすることができます。

誰もスクリプトを書くことができないため、セキュリティは重要な要素ではありません。それは美的な特徴です。

両方のページにdocument.domain JavaScriptプロパティがドメインに設定されている場合、2つのサブドメインが通信できることを言及したいと思います。たとえば:

document.domain = 'example.com'; 

これは、同一生成元ポリシーがa.example.comのために無効になっているとb.example.com限り、すべてのサブドメインは、プロパティセットを持っているようn.example.comすることを意味します。

+0

ご返信ありがとうございます。美容機能だけの場合、別のサブドメインを持つ印象を与えるためにmod_rewriteを使用する方が簡単でしょうか? –

+0

@bare_nature - もしあなたがApacheを使っているなら、あなたはできると思います。しかし、あなたが桟橋を使用しているとしますか? Jettyには書き換えエンジンがありますが、アプリケーションレベルでは301のリダイレクトが埋め込まれています。私の場合、Spring FilterまたはInterceptorは完全に機能し、サブドメインに基づいてさまざまなアクションをプログラムで実行できます。さらに、書き換えには処理が多く、ビジネスロジックは不要です。また、動的ではないため、ハードコーディングする必要があります。 * .example.comがすぐにあなたのアプリに解決された場合、あなたのアプリはどれだけ速くなりますか? a.example.com、b.example.com、余分な処理はありません。 – jmort253

3

各アプリケーションにサブドメインを使用すると、どのアプリケーションを使用するかを知る基本的な問題が解決します。これにより、ユーザーは同じブラウザーで同時に複数のアプリケーションを開くことができます。

追加の利点は、ログインをサブドメインにバインドすることで、ユーザーは異なるアプリケーションで異なるユーザーとしてログインできることです。アプリBにログインするには、アプリAからログアウトする必要はありません。別のログインでログインすることができます。

スケーラビリティの利点は、アーキテクチャによって異なります。アプリケーションの共有リソース(単一データベース)が多ければ多いほど、アプリケーションを分離するのが難しくなります。一方、アプリケーションごとにデータベースがある場合、データベースのバージョン管理ははるかに問題になります。私は、ほとんどのアプリが単一のデータベースと仮想サブドメインを使用していると思います。単一の基盤は維持しやすくなります(ただし、拡大縮小は難しい)。

サブドメインを使用することの否定的な点は、SSLの場合、単一ドメイン証明書以上のコストを必要とするワイルドカード証明書が必要であることです。

+0

返事ありがとう、Stefaan。私はあなたが私の質問を間違って読んだ(または私は十分ではなかった)と思うが、私は別のアプリケーションではなく、異なるユーザーのためにサブドメインを使うことを考えている。とにかく、あなたの推論のほとんどはどんな場合でも適用されます。また、SSL証明書について何が言及されているか知ることは面白いです。それは知らなかった。 –

関連する問題