PHPでのユーザーセッションの管理は、動的なWebアプリケーションを構築する中核的なものの1つです。デフォルトでは、PHPセッションはCookieを使用して、クライアントとサーバー間のセッションIDを渡します。セキュリティ、制御セッションの動作、またはブラウザの互換性要件に準拠するために、 Session_set_cookie_params()関数を使用して、セッションCookieのパラメーターをカスタマイズできます。この記事では、この機能の使用方法とベストプラクティスを詳細に紹介します。
session_set_cookie_params()は、 session_start()を呼び出す前に、セッションCookieの関連パラメーターを設定するために使用されます。これらのパラメーターには次のものが含まれます。
生涯:秒単位でのCookieの有効期間。 0に設定すると、ブラウザが閉じているときにブラウザが無効になることを意味します。
パス:Cookieが配置されている有効なパス、デフォルトは/です。
ドメイン:Cookieが存在する有効なドメイン名。
セキュア:Boolean、HTTPSを介してCookieが送信されるかどうかを示します。
httponly :boolean。クッキーをhttponlyに設定するかどうかを示し、JavaScriptを介したアクセスを防ぎます。
PHP 7.3.0から始めて、上記のパラメーターは、より柔軟で読みやすい連想配列を渡すことで設定することもできます。
従来の方法を使用してクッキーパラメーターを設定する例は次のとおりです。
session_set_cookie_params(3600、 "/"、 "m66.net"、true、true); session_start();
上記のコードでは、Cookieは1時間後に期限切れになるように設定されており、 M66.NETドメイン名とそのサブパスでのみ有効であり、HTTPSを介したアクセスが必要であり、JavaScript(強化されたセキュリティ)を介してアクセスできません。
より明確なコード構造の場合、配列を使用してクッキーパラメーターを設定することをお勧めします。
session_set_cookie_params(['lifetime' => 3600、 'path' => '/'、 'domain' = 'm66.net'、 'secure' => true、 'httponly' => true、 'samesite' => 'strict']); session_start();
注: SamesSiteパラメーターは、CSRF攻撃を防ぐためです。 「lax」 、 「厳格」 、または「なし」に設定できます。 「なし」を使用する場合、セキュアは真でなければなりません。
HTTPSを有効にする:HTTPSを使用し、セッションIDが中間の攻撃によって傍受されないように安全に設定することを常にお勧めします。
httponly Protection XSS : HTTPonlyをオンにすると、JavaScriptがCookieにアクセスしないようにし、クロスサイトスクリプト攻撃のリスクを減らすことができます。
妥当性の合理的な設定期間:過度に長いクッキーライフサイクルを設定することはお勧めしません。通常、数時間以内に制御する方が合理的です。
ドメインとパスの設定:ドメインとパスが合理的に設定されていることを確認し、無関係なサブドメインまたはパスに漏れているCookieを避けます。
間違った注文: session_set_cookie_params()は、 session_start()を呼び出す前に呼び出す必要があります。それ以外の場合は、設定が無効です。
https exabled : secure => trueを使用する場合、HTTPSを介してアクセスする必要があります。そうしないと、ブラウザはCookieを送信しません。
ブラウザの互換性の問題:古いブラウザーのセームサイト設定はサポートされていない場合があります。ターゲットユーザーグループに基づいて使用するかどうかを決定することをお勧めします。
関連タグ:
cookie