0Pricing
PHP Academy · レッスン

Cookieのセキュリティ:HttpOnlyとSecureフラグ

HttpOnly、Secure、SameSite属性でCookieを保護します

「Cookieのセキュリティ:HttpOnlyとSecureフラグ」はCoddyKit上の無料PHP Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPHP Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 PHP Academyコースには全4レッスンが含まれています。

HttpOnlyフラグ

CookieにHttpOnlyフラグがある場合、JavaScriptはdocument.cookieを介してアクセスできないため、XSSを利用したセッションの盗難を防げます。

HttpOnlyとSecureの設定

読みやすく整理されたコードにするには、オプション配列形式(PHP 7.3以降)を使用します。

<?php
setcookie("session_id", $id, [
    "expires"  => time() + 3600,
    "path"     => "/",
    "secure"   => true,
    "httponly" => true,
    "samesite" => "Strict",
]);

Secureフラグ

Secure CookieはHTTPS経由でのみ送信されます。HTTP接続ではブラウザーがCookieを送信しないため、平文HTTP経由での傍受を防げます。

SameSite属性

SameSiteは、クロスサイトリクエストでCookieを送信する条件を制御します:

  • Strict — 同一サイトのリクエストのみ
  • Lax — 同一サイトのリクエストとトップレベルナビゲーション
  • None — クロスサイト(Secureが必要)

SameSiteとCSRF

SameSiteをStrictまたはLaxに設定すると、偽造されたクロスサイトPOSTリクエストではセッションCookieが送信されないため、CSRFを軽減できます。

php.iniのセッションCookie設定

実行時に、セッションCookieのセキュリティに関するデフォルト値を設定します:

<?php
ini_set("session.cookie_httponly", "1");
ini_set("session.cookie_secure",   "1");
ini_set("session.cookie_samesite", "Lax");
session_start();

Cookieプレフィックス

ブラウザーはCookie名のプレフィックスを適用します:

  • __Secure- — CookieにSecureフラグが必要です
  • __Host- — Secure、Path=/が必要で、Domain属性は指定できません

Cookieプレフィックスの例

__Host-プレフィックスを使用すると、Cookieを正確なホストに限定できます。

<?php
setcookie("__Host-session", $token, [
    "secure"   => true,
    "httponly" => true,
    "samesite" => "Strict",
    "path"     => "/",
]);

DevToolsでフラグを確認する

ブラウザーのDevTools → Application → Cookiesで、HttpOnlyにチェックがあること、Secureにチェックがあること、SameSiteがStrictまたはLaxになっていることを確認します。

HttpOnlyがない場合

XSSによって注入された悪意のあるスクリプトは、document.cookieを実行してセッションIDを読み取り、攻撃者に送信できます。その結果、アカウントを乗っ取られる可能性があります。

Secureがない場合

HTTPとHTTPSが混在するサイトでは、セッションCookieがHTTP経由で平文送信されます。ネットワーク上の盗聴者がCookieを盗めます。

まとめ

セッションCookieと認証Cookieには、必ずHttpOnlyとSecureを設定します。SameSite=StrictまたはLaxも追加します。setcookie()のオプション配列形式を使用します。

クイックチェック

JavaScriptによるCookieの読み取りを防ぐフラグはどれですか?

よくある質問

「Cookieのセキュリティ:HttpOnlyとSecureフラグ」レッスンは無料ですか?

はい。「Cookieのセキュリティ:HttpOnlyとSecureフラグ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、PHP Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 PHP Academyコースには全4レッスンが含まれています。

「Cookieのセキュリティ:HttpOnlyとSecureフラグ」で何を学びますか?

HttpOnly、Secure、SameSite属性でCookieを保護します ブラウザで直接実行するハンズオンコードでPHP Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

PHP Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのPHP Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「Cookieのセキュリティ:HttpOnlyとSecureフラグ」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このPHP Academyレッスンでコードを書いて実行できますか?

はい。すべてのPHP Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. セッションの開始と利用
  2. セキュアなセッションのベストプラクティス
  3. Cookieの設定と読み取り
  4. Cookieのセキュリティ:HttpOnlyとSecureフラグ
← PHP Academyに戻る