Cookieの安全性の確認方法とチェックポイント(HttpOnly / Secure / SameSite)
ログイン状態を保持するCookieの保護属性が不十分だと、なりすましの起点になります。属性はブラウザの開発者ツールでそのまま確認できます。
確認すべき項目
- HttpOnly属性(スクリプトからの読み取り防止)
- Secure属性(HTTPS通信時のみ送信)
- SameSite属性(他サイトからの送信制限)
- 有効期間(Expires / Max-Age)が過剰に長くないか
なぜ重要か
HttpOnlyが無いと、XSSでログインCookieを盗まれてなりすまされる恐れがあります。Secureが無いと暗号化されていない通信で傍受される余地が残ります。
自分で確認する手順
- Cookieの一覧を出す:開発者ツールの Application(または Storage)タブ → Cookies で、対象ドメインのCookieを一覧表示する。
- **ログイン後**に確認する:セッションCookieはログインして初めて発行されるため、未ログイン状態の確認では見落とす。テスト用アカウントでログインしてから見る。
- 属性を判断する:セッション系のCookie(
PHPSESSID・wordpress_logged_in_*など)に HttpOnly と Secure の両方が付いているかを確認する。 - SameSiteを判断する:
Laxが既定として無難。Noneを使う場合は Secure が必須で、他サイトからの送信を許す構成のため意図があるかを確認する。 - 解析・広告用のCookieと区別する:認証に関わらないCookieに HttpOnly は不要なことがある。**認証に関わるものを優先**して点検する。
よくある質問
HttpOnlyとSecureはどちらも必要ですか?
ログインに関わるCookieには両方の付与を推奨します。可能なら SameSite も併せて設定してください。
属性を変えると不具合が出ませんか?
SameSite を強めると、外部サイトからの遷移でログイン状態が引き継がれなくなる場合があります。決済や外部連携がある場合は、検証環境で影響を確認してから適用してください。
ひとつずつ確認し続けるのが難しいときは
ここで挙げた検査は、サイトドックの月次の定期診断に含まれます。見つかった弱点のうちエッジで治せるものはその場で自動修復し、実施した対策は毎月のレポート(PDF)でお届けします。