web-dev-qa-db-ja.com

HTTPSのみのサイトの実装者向けのガイダンス(サーバー側)

HTTPS攻撃の最近の傾向は、HTTPプロトコルを攻撃することです。 HTTPSのみが必要なプロトコルの場合、サイトのセキュリティを強化するにはどうすればよいですか?

実装しやすいアイデアは

  • 実装 HTTPS Strict Transport Security
  • SSL経由で認証ページを発行する
  • CSS DIVではなく、ログインページの送信ボタンにHTMLフォーム投稿を使用する
    • ... なぜ?ユーザーがホバーしてもターゲットURLが表示されない
  • 特定のMITM攻撃を阻止するため、クライアントにナビゲーションページのキャッシュを許可します。
  • SSLのみのCookieを使用する
  • I-Frame Buster および X-Frames-Options ヘッダーを使用する
  • 暗号リストを編集して、 RC4、AES または のみを使用します[〜#〜] pfs [〜#〜]

より高度な/技術的なオプションには、

  • DNSSec を使用して、脆弱なユーザーを保護します
  • どこでもSSLのみのCookieを使用する
  • すべてのAJAXデータに HTTPSパディング を使用)
  • HTTPS経由でのみ「セッションキー」を発行する
  • オフサイトリンク を中間ページに送信

問題を引き起こす可能性のあるオプション(ユーザーエクスペリエンスなど)

  • 次のようなWebブラウザを許可しない:
  • ポート80を許可しない
  • ホワイトリストに登録された一連のドメインからのリダイレクトのみを許可します。誰かにサイトへのリンクを許可しないで、ユーザーにHTTPS URLの入力を強制する
  • そのサイトのすべての操作にプライベート証明書を使用します。 SSL接続を介して拇印(またはRootCA)を発行する

これらのテクニックの一部またはすべてを実装するWebサイトについてどう思いますか?

他にどのようなテクニックをお勧めしますか? (例:OpenIDを使用する/使用しない、特定のHTTPヘッダーディレクティブなど)

27

主なものは次のとおりです。

  • SSLをサイト全体で使用します。 httpでは何も提供しないでください。代わりに、http経由の接続はすべて、https経由でメインサイトのランディングページにすぐにリダイレクトされます。

  • HTTPS Strict Transport Securityを使用します。これにより、ユーザーのブラウザに通知されます。https経由でのみ私に接続してください。これにより、sslstripや同様の中間者攻撃から保護されます。

  • すべてのCookieにセキュアフラグを設定します。これにより、CookieはHTTPSチャネル経由でのみ送信され、安全でないhttpリンク経由では送信されなくなります。

  • http経由で提供されるサードパーティのアクティブコンテンツを避けます。 http経由で外部のアクティブコンテンツをロードしません。サードパーティのソースからロードするCSS、JavaScript、ウィジェット、分析、または広告は、httpsを介してロードされることを確認してください。

    • 可能であればさらに良い方法として、可能であれば独自のコピーを作成し、独自のサーバーからこれらのリソースを提供することを検討できます。そのため、サードパーティのソースからリソースをロードする必要はありません。多くの場合、独自のサーバーにコピーを保存するだけで、サードパーティのソースからのCSS、JavaScriptライブラリ、またはウィジェットのロードを回避できます。

    • 分析については、Google Analyticsはhttpsをサポートしていることに注意してください。

    • 広告は最も難しい部分です。広告を使用する場合、http経由でサードパーティの広告を受け入れる以外に選択肢がない可能性があり、これはセキュリティ上のリスクです。その場合は、広告をiframeで配信します(SCRIPT SRCを使用して広告をページに統合しないでください)。

    HTTPS経由で読み込まれる限り、サードパーティのホストでホストされている画像を読み込むことは問題ありません(混合コンテンツの警告を回避するため)。

これら4つのことを行えば、ほとんどの問題をカバーできると思います。残りはサイト固有の基準で評価できる詳細ですが、(私の意見では)それらはおそらく2番目に重要です。

手の込んだものにしたい場合は、証明書のピン留めや同様の新興技術を見ることができますが、上記の4つから始めることはすでに十分に重要なプロジェクトです。

17
D.W.

ユーザーのセキュリティ

  • 非常に欠けている重要な事柄:CSRFの緩和。

    関連する問題を必ず 完全に理解 してください。 Tldr:additionを認証トークン(たとえば、セッションCookie)に追加するには、チャレンジperアクションがユーザーの意図によるものか、意図しないものかを識別するアクション。

  • 修正 JSONPリーク

  • X-Content-Type-Options: nosniff 、MIMEスニッフィングを防止するためにすべてのページで especially for user-生成されたページ。

  • コンテンツセキュリティポリシー

  • 確認 secure "reset password" メカニズムが他の人のパスワードをリセットして不正なアクセスを取得することを防止します。

  • ユーザーが弱いパスワードを使用するか、受け入れない場合、hugehuge警告を表示します完全に。

  • ユーザーをトレーニングして(おそらく、緑色のバーを指すすべてのページの矢印画像を使用して)、ページにHTTPSがロードされているかどうかを確認します。 HSTSをサポートしないブラウザーを使用する場合、少なくともHTTPSが欠落していることに気づくでしょう。



サーバー/ユーザーのセキュリティ

  • timingattacks によってシークレットが漏洩しないことを確認します。



ユーザーのプライバシー

  • Ajaxのみにパディングを適用するだけでは不十分です。 ユーザーをネットワーク監視から保護するすべての要求と応答にはデータを埋め込む必要があります。リクエストは時間を埋める必要はありませんが、レスポンスは時間を埋める必要があります。

  • 応答のタイミングの変動 によるリーク履歴の修正:

    アリスがWebサーフィンをしていて、ボブのhttp://www.bob.comのWebサイトにアクセスするとします。ボブは、アリスがチャーリーのWebサイト(http://www.charlie. com)にアクセスしたかどうかを調べたいと考えています。

    まず、ボブはチャーリーのサイトを見て、そのサイトへのすべての訪問者が見たであろうファイルを選びます。ボブがチャーリーの企業ロゴを含むファイルをhttp://www.charlie.com/ logo.jpgで選択するとします。ボブは、ロゴファイルがアリスのWebキャッシュにあるかどうかを判断します。ファイルが彼女のキャッシュにある場合、彼女は最近チャーリーのWebサイトにアクセスしたはずです。

    ボブはJavaアプレットを作成して攻撃を実装し、それを彼のホームページに埋め込みます。アリスが攻撃ページを表示すると、Javaアプレットが自動的にダウンロードされ、アリスのブラウザで実行します。アプレットは、アリスのマシンのhttp://www. charlie.com/logo.jpgにアクセスするために必要な時間を測定し、この時間をボブに報告します。時間があるしきい値(たとえば80ミリ秒)未満の場合、ボブはアリスが最近チャーリーのサイトに行ったことがあるが、しきい値を超えている場合、最近チャーリーのサイトに行ったことがないと結論付けている。



サーバーのプライバシー



可用性

  • DoSおよびDDoS の場合のユーザーベース/ IPベースのスロットリング。



修正できないその他の雑多なもの(ブラウザの問題):

3
Pacerier