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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- セッションの開始と利用
- セキュアなセッションのベストプラクティス
- Cookieの設定と読み取り
- Cookieのセキュリティ:HttpOnlyとSecureフラグ