安全な Cookie
Silktide はページが設定する Cookie を調べ、暗号化されていない接続で送信される可能性のある Cookie を報告します。Cookie は、通信中に傍受されないよう、暗号化された接続に限定する必要があります。
は、設定時に Secure 属性を追加することで制限できます。
Set-Cookie: session=abc123; Secure; HttpOnly
重要な理由
Cookie には、訪問者のセッションへの鍵、つまりログイン済みであることを証明する情報が含まれていることがよくあります。Secure 属性のない Cookie は、一致するリクエストとともに送信されます。これには、ネットワーク経路上の誰もが読み取れる通常の http:// リクエストも含まれます。攻撃者は、セッション Cookie を取得すれば、パスワードを知ることなくその訪問者になりすますことができます。
で完全に提供されているウェブサイトであっても、古いリンクや入力されたアドレスなど、暗号化されていないリクエストが 1 つあるだけで、安全でない Cookie が漏洩する可能性があります。Secure 属性を指定すると、ブラウザーは暗号化されていないリクエストに対して Cookie を一切送信しなくなります。
修正方法
- 自分のコードで設定する Cookie には、
Secure属性(通常は、スクリプトから Cookie を隠すHttpOnly属性も)を追加します。
Set-Cookie: session=abc123; Secure; HttpOnly
ほとんどのウェブフレームワークには、すべての Cookie にこの設定を適用する機能があります。
- サードパーティ製ツール(アナリティクス、チャットウィジェット、埋め込みコンテンツなど)が設定する Cookie については、ツールの設定で安全な Cookie のオプションを確認するか、最新バージョンに更新します。一般的なサービスの多くは、最新バージョンではデフォルトで
Secureを設定します。 - サードパーティ Cookie を安全にできず、そのリスクを受け入れる場合(たとえば、機密情報を含まない追跡用 Cookie など)は、その Cookie に関する検出結果を できます。
Silktide によるテスト方法
- 各ページをブラウザーで読み込み、サーバーまたはスクリプトによって設定されたすべての Cookie を記録します。
- 各 Cookie に
Secure属性があるかチェックします。 Secure属性がない、名前付きの Cookie をそれぞれ報告します。
トラブルシューティング
検出された Cookie がサードパーティサービスのものである
そのサービスをページ上で実行するかどうかは引き続き管理できますが、Cookie の設定方法を常に管理できるとは限りません。まず、サービスの設定とドキュメントで安全な Cookie のオプションを確認してください。存在しない場合は、Cookie の内容が問題になるほど機密性の高いものかどうかを判断し、そうでなければ検出結果を承認します。
Cookie に機密情報が含まれていない
HTTPS サイトでは Secure 属性によるコストはないため、無害な Cookie に対しても設定するのが適切です。ただし、Cookie を管理できず、その内容が実際に取るに足らないものである場合は、検出結果を承認しても問題ありません。