私は最初のWebアプリケーションに取り組んでおり、通常はAmazon.comを自分のロールモデルと呼んでいます。
SSL/TLSを使用したWebアプリケーションのデプロイに非常に興味があります。しかし、私には理解できないことが一つあります。 Amazonのホームページのアドレスバーが緑色にならないのはなぜですか?サイトを保護するためにSSL/TLSで暗号化してはいけませんか?
支払いページのみを保護することで十分でしょうか?
Amazonは、TLSのオーバーヘッドは、機密のアクション(注文、支払い処理、アカウント管理、注文履歴、ログインなど)を実行していないときにトラフィックを暗号化しないことを正当化するのに十分高いと考えています。 TLSのサーバー側のコストは今日のハードウェアではほとんど取るに足りませんが、それでもコストはゼロではありません。クライアント側への影響は、特に、一部のモバイル接続のような高遅延または信頼性の低いリンクでは、はるかに悪化する可能性があります。 TLSはページの読み込みに大幅な遅延を引き起こす可能性があり、顧客が別の場所に移動する可能性があります。
私は個人的に、理由があるまでそうしないまで、すべてのトラフィックにTLSを使用する方が良いと考えています-そして、それらの多くは、有効とは言えませんが、何よりもまずセキュリティの人です。アマゾンはお金を稼ぐために存在し、安全なウェブ開発のロールモデルではありません。すべてのTLSで常にHTTPを使用するよりもコストがかかる場合、顧客が特定の種類の攻撃にさらされるとしても、2番目のオプションを選択します。
このようなリスクの例:ログインフォームはHTTPS経由で提供されますが、そこに移動するボタンはHTTP経由で提供されます。攻撃者は SSL Stripping attack を使用してホームページを変更し、ログインボタンがHTTPSではなくHTTPにリンクされるようにして、ユーザーがログインしようとしたときにログインページを偽装する可能性があります。その後、攻撃者はユーザーの資格情報を入手する可能性があります。 Amazonは Strict-Transport-Security
header ですが、常にHTTPSを介してサイト全体にサービスを提供する必要があります。
セキュリティロールモデルとして、Amazonはいくつかのことを非常にうまく行っています。たとえば、それらの SigV4 スキームはAWSに認証、整合性、およびリプレイ攻撃の制限を提供します。本質的に機密性の高いデータがないことを前提として十分です(クレジットカード番号は本質的に機密です;クレジットカード番号にマップする識別子文字列はそうではありません)リクエストまたはレスポンスで、一部のAWS関数でTLSを使用しないことが実際に安全である場合があります(一般的に、ほとんどのAWSにTLSを義務付けていますが)。しかし、彼らの小売サイトは、若干の利益を上げるために少しのセキュリティを犠牲にするいくつかのトレードオフを作ります。
Amazonのビジネスの成功をエミュレートする場合は、セキュリティの選択肢をコピーするのが賢明かもしれませんが、Amazon.com小売サイトは古く、長年にわたって多くの変更が行われ、セキュリティがますます強化されています。サイトでダウンタイムが発生するのにかかるコストを考えると、必要以上に混乱することはおそらく非常にためらいます。今日ゼロからサイトを設計している場合、HSTSがプリロードされているため、すべてにTLSを使用する可能性があります。または、おそらく彼らはそうしません。結局のところ、彼らがそうすることを検討したことは確かであり、それを(まだ)実装しない理由があります。
最後に、このサイトは確かにHTTPSを介して常に機能します。以前はこのコンピューターでHTTPSを使用したことがなく、ログインしたこともまったくなかったとしても、私のブラウザーは実際にはデフォルトで小売サイトにHTTPSを使用していました。ユーザーがHTTPSを使用することを特に希望している場合でも、ユーザーをHTTPSからHTTPにリダイレクトする(Slashdotを見て)サイトの1つにしないでください。
Googleを見ると、2011年にHTTPからHTTPSに切り替わったため、大量のリクエストを処理することは確かに可能です。たぶん、Amazonの人たちはただ遅く、サーバーが多く、官僚機構が多いか、古いデバイス/ブラウザーを使用している少数の人のほうが重要であると判断したのかもしれません。
また、現在のブラウザはドメイン名を入力するすべてのリクエストを最初にHTTPに開始し、次にHTTPSにリダイレクトされるため、現在HTTPSをデフォルトに設定することは困難です。