1
0
mirror of https://github.com/php/doc-ja.git synced 2026-04-27 10:06:43 +02:00
Files
archived-doc-ja/reference/session/ini.xml
T
2025-09-09 21:32:57 +09:00

1071 lines
42 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 7f1b75ed358430c1db0e37c832d2926735d5f5c2 Maintainer: hirokawa Status: ready -->
<!-- CREDITS: shimooka,takagi,mumumu,jdkfx -->
<section xml:id="session.configuration" xmlns="http://docbook.org/ns/docbook">
&reftitle.runtime;
&extension.runtime;
<para>
<table>
<title>セッションの設定オプション</title>
<tgroup cols="4">
<thead>
<row>
<entry>&Name;</entry>
<entry>&Default;</entry>
<entry>&Changeable;</entry>
<entry>&Changelog;</entry>
</row>
</thead>
<tbody xml:id="session.configuration.list">
<row>
<entry><link linkend="ini.session.save-path">session.save_path</link></entry>
<entry>""</entry>
<entry><constant>INI_ALL</constant></entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.session.name">session.name</link></entry>
<entry>"PHPSESSID"</entry>
<entry><constant>INI_ALL</constant></entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.session.save-handler">session.save_handler</link></entry>
<entry>"files"</entry>
<entry><constant>INI_ALL</constant></entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.session.auto-start">session.auto_start</link></entry>
<entry>"0"</entry>
<entry><constant>INI_PERDIR</constant></entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.session.gc-probability">session.gc_probability</link></entry>
<entry>"1"</entry>
<entry><constant>INI_ALL</constant></entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.session.gc-divisor">session.gc_divisor</link></entry>
<entry>"100"</entry>
<entry><constant>INI_ALL</constant></entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.session.gc-maxlifetime">session.gc_maxlifetime</link></entry>
<entry>"1440"</entry>
<entry><constant>INI_ALL</constant></entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.session.serialize-handler">session.serialize_handler</link></entry>
<entry>"php"</entry>
<entry><constant>INI_ALL</constant></entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.session.cookie-lifetime">session.cookie_lifetime</link></entry>
<entry>"0"</entry>
<entry><constant>INI_ALL</constant></entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.session.cookie-path">session.cookie_path</link></entry>
<entry>"/"</entry>
<entry><constant>INI_ALL</constant></entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.session.cookie-domain">session.cookie_domain</link></entry>
<entry>""</entry>
<entry><constant>INI_ALL</constant></entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.session.cookie-secure">session.cookie_secure</link></entry>
<entry>"0"</entry>
<entry><constant>INI_ALL</constant></entry>
<entry>PHP 7.2.0 より前のバージョンでは、デフォルト値は <literal>""</literal> でした。</entry>
</row>
<row>
<entry><link linkend="ini.session.cookie-httponly">session.cookie_httponly</link></entry>
<entry>"0"</entry>
<entry><constant>INI_ALL</constant></entry>
<entry>PHP 7.2.0 より前のバージョンでは、デフォルト値は <literal>""</literal> でした。<literal>""</literal></entry>
</row>
<row>
<entry><link linkend="ini.session.cookie-samesite">session.cookie_samesite</link></entry>
<entry>""</entry>
<entry><constant>INI_ALL</constant></entry>
<entry>PHP 7.3.0 から利用可能</entry>
</row>
<row>
<entry><link linkend="ini.session.use-strict-mode">session.use_strict_mode</link></entry>
<entry>"0"</entry>
<entry><constant>INI_ALL</constant></entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.session.use-cookies">session.use_cookies</link></entry>
<entry>"1"</entry>
<entry><constant>INI_ALL</constant></entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.session.use-only-cookies">session.use_only_cookies</link></entry>
<entry>"1"</entry>
<entry><constant>INI_ALL</constant></entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.session.referer-check">session.referer_check</link></entry>
<entry>""</entry>
<entry><constant>INI_ALL</constant></entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.session.cache-limiter">session.cache_limiter</link></entry>
<entry>"nocache"</entry>
<entry><constant>INI_ALL</constant></entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.session.cache-expire">session.cache_expire</link></entry>
<entry>"180"</entry>
<entry><constant>INI_ALL</constant></entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.session.use-trans-sid">session.use_trans_sid</link></entry>
<entry>"0"</entry>
<entry><constant>INI_ALL</constant></entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.session.trans-sid-tags">session.trans_sid_tags</link></entry>
<entry>"a=href,area=href,frame=src,form="</entry>
<entry><constant>INI_ALL</constant></entry>
<entry>PHP 7.1.0 から利用可能</entry>
</row>
<row>
<entry><link linkend="ini.session.trans-sid-hosts">session.trans_sid_hosts</link></entry>
<entry><literal>$_SERVER['HTTP_HOST']</literal></entry>
<entry><constant>INI_ALL</constant></entry>
<entry>PHP 7.1.0 から利用可能</entry>
</row>
<row>
<entry><link linkend="ini.session.sid-length">session.sid_length</link></entry>
<entry>"32"</entry>
<entry><constant>INI_ALL</constant></entry>
<entry>PHP 7.1.0 から利用可能。PHP 8.4.0 以降では非推奨。</entry>
</row>
<row>
<entry><link linkend="ini.session.sid-bits-per-character">session.sid_bits_per_character</link></entry>
<entry>"4"</entry>
<entry><constant>INI_ALL</constant></entry>
<entry>PHP 7.1.0 から利用可能。PHP 8.4.0 以降では非推奨。</entry>
</row>
<row>
<entry><link linkend="ini.session.upload-progress.enabled">session.upload_progress.enabled</link></entry>
<entry>"1"</entry>
<entry><constant>INI_PERDIR</constant></entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.session.upload-progress.cleanup">session.upload_progress.cleanup</link></entry>
<entry>"1"</entry>
<entry><constant>INI_PERDIR</constant></entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.session.upload-progress.prefix">session.upload_progress.prefix</link></entry>
<entry>"upload_progress_"</entry>
<entry><constant>INI_PERDIR</constant></entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.session.upload-progress.name">session.upload_progress.name</link></entry>
<entry>"PHP_SESSION_UPLOAD_PROGRESS"</entry>
<entry><constant>INI_PERDIR</constant></entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.session.upload-progress.freq">session.upload_progress.freq</link></entry>
<entry>"1%"</entry>
<entry><constant>INI_PERDIR</constant></entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.session.upload-progress.min-freq">session.upload_progress.min_freq</link></entry>
<entry>"1"</entry>
<entry><constant>INI_PERDIR</constant></entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.session.lazy-write">session.lazy_write</link></entry>
<entry>"1"</entry>
<entry><constant>INI_ALL</constant></entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.session.hash-function">session.hash_function</link></entry>
<entry>"0"</entry>
<entry><constant>INI_ALL</constant></entry>
<entry>PHP 7.1.0 で削除されました。</entry>
</row>
<row>
<entry><link linkend="ini.session.hash-bits-per-character">session.hash_bits_per_character</link></entry>
<entry>"4"</entry>
<entry><constant>INI_ALL</constant></entry>
<entry>PHP 7.1.0 で削除されました。</entry>
</row>
<row>
<entry><link linkend="ini.session.entropy-file">session.entropy_file</link></entry>
<entry>""</entry>
<entry><constant>INI_ALL</constant></entry>
<entry>PHP 7.1.0 で削除されました。</entry>
</row>
<row>
<entry><link linkend="ini.session.entropy-length">session.entropy_length</link></entry>
<entry>"0"</entry>
<entry><constant>INI_ALL</constant></entry>
<entry>PHP 7.1.0 で削除されました。</entry>
</row>
</tbody>
</tgroup>
</table>
&ini.php.constants;
</para>
<para>
セッション管理システムは、&php.ini;ファイルに記述可能な多くの設定オ
プションをサポートします。以下に概要を示します。
<variablelist>
<varlistentry xml:id="ini.session.save-handler">
<term>
<parameter>session.save_handler</parameter>
<type>string</type>
</term>
<listitem>
<simpara>
<literal>session.save_handler</literal> は、
セッションに関連するデータの保存および取得時に使用するハンドラを定義します。
デフォルトは、<literal>files</literal> です。各拡張モジュールで、
独自の <literal>save_handler</literal> を使用できることに注意しましょう。
インストール環境単位で登録されているハンドラを取得するには
<function>phpinfo</function> を使用します。
<function>session_set_save_handler</function> も参照ください。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.session.save-path">
<term>
<parameter>session.save_path</parameter>
<type>string</type>
</term>
<listitem>
<simpara>
<literal>session.save_path</literal> は、保存ハンドラに渡される
引数を定義します。デフォルトのファイルハンドラを選択した場合、
ファイルが作成される場所のパスになります。
<function>session_save_path</function> も参照ください。
</simpara>
<para>
オプションの引数として <literal>N</literal>(数値)を指定できます。
これはセッションファイルを分散して保存する際に
ディレクトリ階層レベルを決定します。
例えば、<literal>'5;/tmp'</literal>とすると
<literal>/tmp/4/b/1/e/3/sess_4b1e384ad74619bd212e236e52a5a174If</literal>
という位置にセッションファイルを生成します。
<literal>N</literal> を使用するには、これらすべてのディレクトリが
事前に作成されている必要があります。
そのためのシェルスクリプトが<filename>ext/session</filename>
<filename>mod_files.sh</filename>というファイル名であります。
Windows 版の <filename>mod_files.bat</filename> もあります。
また、0以上の <literal>N</literal> が指定されている場合には自動ガーベッジコレクション
が機能しないことに注意してください。詳細は &php.ini; を見てください。
また、<literal>N</literal> を指定する場合は、
<literal>session.save_path</literal>を"quotes"で囲う必要があります。
なぜならセパレータ(<literal>;</literal>) は
&php.ini; ではコメントとしても利用されているからです。
</para>
<para>
ファイルストレージモジュールが作るファイルのモードは、デフォルトで 600 になります。
このデフォルトを変更するには、オプションの引数 <literal>MODE</literal> を利用します。
<literal>N;MODE;/path</literal> のように使い、<literal>MODE</literal>
の部分に八進形式のモードを指定します。<literal>MODE</literal> を設定しても、そのプロセスの umask は変わりません。
</para>
<warning>
<para>
この設定を <filename>/tmp</filename> (デフォルト) のようにどこか
らでも読み込み可能なディレクトリに設定した場合、サーバー上
の他のユーザーがこのディレクトリのファイルのリストを取得すること
により、セッションをハイジャックをすることが可能となります。
</para>
</warning>
<caution>
<para>
オプションのディレクトリレベル定数 <literal>N</literal> で、
1 あるいは 2 以外の値を使うのは、大半のサイトでは不適切です。
大量のディレクトリが必要になってしまうからです。たとえば、この値を 3 にすると、
ファイルシステム上のディレクトリの数が <literal>(2 ** session.sid_bits_per_character) ** 3</literal> にもなり、
ディスク容量や inode の無駄遣いになってしまいます。
</para>
<para>
<literal>N</literal> を 2 より大きくするのは、
それを必要とするような大規模サイトに限るようにしましょう。
</para>
</caution>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.session.name">
<term>
<parameter>session.name</parameter>
<type>string</type>
</term>
<listitem>
<simpara>
<literal>session.name</literal> はセッション名を指定し、
クッキー名として使用されます。
アルファベット文字のみで指定する必要があります。
デフォルトは、<literal>PHPSESSID</literal> です。
<function>session_name</function>も参照ください。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.session.auto-start">
<term>
<parameter>session.auto_start</parameter>
<type>bool</type>
</term>
<listitem>
<simpara>
<literal>session.auto_start</literal> はリクエスト開始時に
セッションモジュールがセッションを自動的に開始するかどうかを
指定します。デフォルトは、<literal>0</literal>(無効)です。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.session.serialize-handler">
<term>
<parameter>session.serialize_handler</parameter>
<type>string</type>
</term>
<listitem>
<simpara>
<literal>session.serialize_handler</literal> は、シリアル化または
シリアル化データを復元するために使用されるハンドラの名前を定義します。
PHP シリアライズフォーマット (<literal>php_serialize</literal>)、
PHP 内部フォーマット (<literal>php</literal> あるいは <literal>php_binary</literal>)、
そして WDDX (<literal>wddx</literal>)
に対応しています。WDDX は、PHP が<link
linkend="ref.wddx">WDDX サポート</link>
を有効にしてコンパイルされている場合のみ使用可能です。
<literal>php_serialize</literal> はプレーンな serialize/unserialize
関数を内部的に使っており、<literal>php</literal><literal>php_binary</literal>
のような制約はありません。これらのシリアライズハンドラでは、$_SESSION
の中で数値のインデックスや特殊文字
(<literal>|</literal><literal>!</literal>)
を含む文字列のインデックスを使えませんでした。
<literal>php_serialize</literal> を使えば、
スクリプトの終了時に数値インデックスや特殊文字インデックスのエラーが出ないようにできます。
デフォルトは <literal>php</literal> です。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.session.gc-probability">
<term>
<parameter>session.gc_probability</parameter>
<type>int</type>
</term>
<listitem>
<simpara>
<literal>session.gc_probability</literal>
<literal>session.gc_divisor</literal>の組み合わせでgc
(ガーベッジコレクション)ルーチンの始動を制御します。
デフォルトは、<literal>1</literal> です。
<literal>0</literal> 以上の値でなければいけません。
詳細は<link
linkend="ini.session.gc-divisor">session.gc_divisor</link>
をご覧ください
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.session.gc-divisor">
<term>
<parameter>session.gc_divisor</parameter>
<type>int</type>
</term>
<listitem>
<simpara>
<literal>session.gc_divisor</literal>
<literal>session.gc_probability</literal>の組み合わせで
すべてのセッションの初期化過程でgc(ガーベッジコネクション)プロセス
も始動する確率を制御します。確率は gc_probability/gc_divisor
で計算されます。例えば、1/100は各リクエスト毎に1%の確率でGCプロセスが
始動します。
<literal>session.gc_divisor</literal>のデフォルトは<literal>100</literal>です。
<literal>0</literal> より大きな値でなければいけません。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.session.gc-maxlifetime">
<term>
<parameter>session.gc_maxlifetime</parameter>
<type>int</type>
</term>
<listitem>
<simpara>
<literal>session.gc_maxlifetime</literal> は、データが
'ごみ' とみなされ、消去されるまでの秒数を指定します。
ガベージコレクション (ごみの収集) は、
セッションの開始時に行われます (<link
linkend="ini.session.gc-probability">session.gc_probability</link>
<link linkend="ini.session.gc-divisor">session.gc_divisor</link>
に依存します)。
デフォルトは <literal>1440</literal> (24分) です。
</simpara>
<note>
<simpara>
異なる値を <literal>session.gc_maxlifetime</literal> に指定している
別々のスクリプトがセッションデータの保存場所を共有している場合、
一番小さい設定値に達した時点でデータが消去されます。このような場合には、
お互いに <link linkend="ini.session.save-path">session.save_path</link>
を使用します。
</simpara>
</note>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.session.referer-check">
<term>
<parameter>session.referer_check</parameter>
<type>string</type>
</term>
<listitem>
<simpara>
<literal>session.referer_check</literal> には、HTTP Referer に
おいて確認を行う文字列を指定します。Refererがクライアントにより
送信されており、かつ、指定した文字列が見付からない場合、埋め込
まれたセッションIDは無効となります。デフォルトは空の文字列です。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.session.entropy-file">
<term>
<parameter>session.entropy_file</parameter>
<type>string</type>
</term>
<listitem>
<simpara>
<literal>session.entropy_file</literal> は、
セッションIDを作成する際の別のエントロピーソースとして使用する
外部リソースへのパスを指定します。
例としては、多くの UNIX で利用可能な <literal>/dev/random</literal>
または <literal>/dev/urandom</literal> があげられます。
</simpara>
<simpara>
この機能は、Windows でもサポートされています。
<literal>session.entropy_length</literal> にゼロ以外の値を設定すると、
PHP は Windows Random API をエントロピーソースとして使います。
</simpara>
<note>
<simpara>
PHP 7.1.0 で削除されました。
</simpara>
<simpara>
<literal>/dev/urandom</literal> あるいは <literal>/dev/arandom</literal>
が使えるときは、
それが <literal>session.entropy_file</literal> のデフォルトになります。
</simpara>
</note>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.session.entropy-length">
<term>
<parameter>session.entropy_length</parameter>
<type>int</type>
</term>
<listitem>
<simpara>
<literal>session.entropy_length</literal> は、前記のファイルから
読みこむバイト数を指定します。デフォルトは、<literal>32</literal>
です。
</simpara>
<simpara>
PHP 7.1.0 で削除されました。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.session.use-strict-mode">
<term>
<parameter>session.use_strict_mode</parameter>
<type>bool</type>
</term>
<listitem>
<simpara>
<literal>session.use_strict_mode</literal> は、
厳格なセッション ID モードを利用するかどうかを指定します。
有効にすると、初期化していないセッション ID を受け付けなくなります。
初期化していないセッション ID がブラウザから送信された場合は、
新しいセッション ID をブラウザに送り返します。
このモードを利用すると、セッションアダプションを利用したセッション固定攻撃からアプリケーションを保護できます。
デフォルトは <literal>0</literal> (無効) です。
</simpara>
<note>
<simpara>
一般的なセッションのセキュリティを踏まえると、
<literal>session.use_strict_mode</literal> を有効にしておく必要があります。
すべてのサイトでこれを有効にすることを推奨します。
詳細は <function>session_create_id</function> のサンプルコードを参照ください。
</simpara>
</note>
<warning>
<para>
カスタムのセッションハンドラが <function>session_set_save_handler</function> 経由で登録され、
それが <methodname>SessionUpdateTimestampHandlerInterface::validateId</methodname> を実装せず、
<parameter>validate_sid</parameter> コールバックを提供しない場合、
このディレクティブの値に関わらず、厳格なセッションIDモードは無効になります。
<classname>SessionHandler</classname> クラスは <methodname>SessionHandler::validateId</methodname>
を実装して <emphasis>いない</emphasis> ことに特に注意して下さい。
</para>
</warning>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.session.use-cookies">
<term>
<parameter>session.use_cookies</parameter>
<type>bool</type>
</term>
<listitem>
<simpara>
<literal>session.use_cookies</literal>によりクライアント側にセッ
ションIDを保存する際にクッキーを使用するかどうかを指定します。デ
フォルトは<literal>1</literal> (有効)です。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.session.use-only-cookies">
<term>
<parameter>session.use_only_cookies</parameter>
<type>bool</type>
</term>
<listitem>
<simpara>
<literal>session.use_only_cookies</literal> は、
このモジュールがクライアント側へのセッション ID の保存に
Cookie <emphasis role="strong">のみ</emphasis>
を使用することを指定します。
この設定を有効にすることにより、セッション ID を URL
に埋め込む攻撃を防ぐことができます。
デフォルトは <literal>1</literal> (有効) となります。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.session.cookie-lifetime">
<term>
<parameter>session.cookie_lifetime</parameter>
<type>int</type>
</term>
<listitem>
<simpara>
<literal>session.cookie_lifetime</literal> は、
ブラウザに送信するクッキーの有効期間を秒単位で指定します。
0 を指定すると "ブラウザを閉じるまで" という意味になります。
デフォルトは、<literal>0</literal> です。
<function>session_get_cookie_params</function> および
<function>session_set_cookie_params</function> も参照ください。
</simpara>
<note>
<simpara>
有効期限のタイムスタンプは、サーバーの時刻に基づいて決まります。
クライアントのブラウザの時刻がこれと同じであるとは限りません。
</simpara>
</note>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.session.cookie-path">
<term>
<parameter>session.cookie_path</parameter>
<type>string</type>
</term>
<listitem>
<simpara>
<literal>session.cookie_path</literal>
によりセッションクッキーで設定するパスを指定します。
デフォルトは<literal>/</literal>です。
<function>session_get_cookie_params</function>および
<function>session_set_cookie_params</function>も参照ください。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.session.cookie-domain">
<term>
<parameter>session.cookie_domain</parameter>
<type>string</type>
</term>
<listitem>
<simpara>
<literal>session.cookie_domain</literal>
によりセッションクッキーで指定するドメインを指定します。
デフォルトでは指定されません。
この場合は、クッキーの仕様によって、クッキーを作成したサーバーの
ホスト名が指定されます。
<function>session_get_cookie_params</function> および
<function>session_set_cookie_params</function> も参照ください。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.session.cookie-secure">
<term>
<parameter>session.cookie_secure</parameter>
<type>bool</type>
</term>
<listitem>
<simpara>
クッキーはセキュアな接続を通じてのみ送信すべきものです。
このオプションを <literal>on</literal> にすると、
セッションは HTTPS 接続の場合にのみ動作します。
<literal>off</literal> の場合には、HTTP と HTTPS 接続の両方で動作します。
デフォルトは <literal>off</literal> です。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.session.cookie-httponly">
<term>
<parameter>session.cookie_httponly</parameter>
<type>bool</type>
</term>
<listitem>
<simpara>
クッキーに対して、HTTP を通してのみアクセスできるようにします。
つまり、JavaScript のようなスクリプト言語からはアクセスできなくなるということです。
この設定を使用すると、XSS 攻撃によって ID を盗まれる危険性を減らせます
(が、すべてのブラウザがこの設定をサポートしているというわけではありません)。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.session.cookie-samesite">
<term>
<parameter>session.cookie_samesite</parameter>
<type>string</type>
</term>
<listitem>
<simpara>
クロスサイトリクエストで、サーバーにクッキーを送信しないよう指示できるようにします。
これを用いると、ユーザーエージェントによる生成元とは異なる場所への情報漏洩のリスクを軽減できます。
また、CSRF攻撃に対する防御策のひとつにもなります。
この仕組みはすべてのブラウザがサポートしているわけではないことに注意しましょう。
この項目に空の値を設定した場合は、クッキーのSameSite属性は送信されません。
<literal>Lax</literal><literal>Strict</literal> を設定した場合は、
サイトをまたがる POST リクエストではクッキーを送信しません。GET リクエストの場合は、
<literal>Lax</literal> はサイトをまたがるリクエストでもクッキーを送信しますが、
<literal>Strict</literal> は送信しません。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.session.cache-limiter">
<term>
<parameter>session.cache_limiter</parameter>
<type>string</type>
</term>
<listitem>
<simpara>
<literal>session.cache_limiter</literal>
により、セッションページにおけるキャッシュ制御の方法を指定します。
<literal>nocache</literal><literal>private</literal>
<literal>private_no_expire</literal> あるいは <literal>public</literal>
のいずれかとなります。デフォルトは <literal>nocache</literal> です。
これらの値の意味については
<function>session_cache_limiter</function> のドキュメントも参照ください。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.session.cache-expire">
<term>
<parameter>session.cache_expire</parameter>
<type>int</type>
</term>
<listitem>
<simpara>
<literal>session.cache_expire</literal>によりキャッシュされた
セッションページの有効期間を分単位で指定します。
このオプションは、nocacheリミッタに関しては効果がありません。
デフォルトは、<literal>180</literal>です。
<function>session_cache_expire</function>も参照ください。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.session.use-trans-sid">
<term>
<parameter>session.use_trans_sid</parameter>
<type>bool</type>
</term>
<listitem>
<simpara>
<literal>session.use_trans_sid</literal>は、透過的なセッション
IDの付加をするかどうかを指定します。
デフォルトは、<literal>0</literal>(無効)です。
</simpara>
<note>
<simpara>
URLに基づくセッション管理は、Cookieに基づくセッション管理と比べ
てセキュリティリスクが大きくなります。例えば、ユーザーは、emailに
より友人にアクティブなセッションIDを含むURLを送信する可能性があ
り、また、ユーザーは自分のブックマークにセッションIDを含むURLを保
存し、常に同じセッションIDで使用するサイトにアクセスする可能性
があります。
</simpara>
<simpara>
PHP 7.1.0 以降では、https://php.net/ のような完全な URL
パスが、透過的セッションID機能で扱われるようになります。
これより前のバージョンでは、相対 URL パスだけが対象でした。
リライト対象のホストは
<link linkend="ini.session.trans-sid-hosts">session.trans_sid_hosts</link>
で定義します。
</simpara>
</note>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.session.trans-sid-tags">
<term>
<parameter>session.trans_sid_tags</parameter>
<type>string</type>
</term>
<listitem>
<simpara>
<literal>session.trans_sid_tags</literal>
は、透過的セッションIDのサポートが有効な場合にどの HTML タグをリライトするかを指定します。
デフォルトは
<literal>a=href,area=href,frame=src,input=src,form=</literal>
です。
</simpara>
<simpara>
<literal>form</literal> は特別なタグで、<literal>&lt;input hidden="session_id" name="session_name"&gt;</literal>
がフォーム変数に追加されます。
</simpara>
<note>
<simpara>
PHP 7.1.0 より前のバージョンでは、この目的で使われていた設定項目は
<link linkend="ini.url-rewriter.tags">url_rewriter.tags</link>
でした。
PHP 7.1.0 以降は、<literal>fieldset</literal>
が特別なタグとはみなされなくなります。
</simpara>
</note>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.session.trans-sid-hosts">
<term>
<parameter>session.trans_sid_hosts</parameter>
<type>string</type>
</term>
<listitem>
<simpara>
<literal>session.trans_sid_hosts</literal> は、
は、透過的セッションIDのサポートが有効な場合にどのホストをセッションIDつきにリライトするかを指定します。
デフォルトは <literal>$_SERVER['HTTP_HOST']</literal> です。
複数のホストを指定する場合は "," で区切ってつなぎます。
ホストとホストの間にスペースを入れることはできません。つまり、たとえば
<literal>php.net,wiki.php.net,bugs.php.net</literal>
のように指定します。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.session.sid-length">
<term>
<parameter>session.sid_length</parameter>
<type>int</type>
</term>
<listitem>
<simpara>
<literal>session.sid_length</literal> は、セッション ID 文字列の長さを指定します。
22 から 256 までの値が使えます。
</simpara>
<simpara>
デフォルトは 32 です。互換性を考慮するなら 32 や 40 などを使ってもかまいません。
セッション ID は長ければ長いほど推測されにくくなります。少なくとも 32 を指定することを推奨します。
</simpara>
<tip>
<para>
互換性に関するメモ:
<literal>session.hash_function</literal>=0 (MD5) で
<literal>session.hash_bits_per_character</literal>=4
の場合、あるいは
<literal>session.hash_function</literal>=1 (SHA1) で
<literal>session.hash_bits_per_character</literal>=6
の場合は 32 を使います。
<literal>session.hash_function</literal>=0 (MD5) で
<literal>session.hash_bits_per_character</literal>=5
の場合は、26 を使います。
<literal>session.hash_function</literal>=0 (MD5) で
<literal>session.hash_bits_per_character</literal>=6
の場合は、22 を使います。
INI 設定で、セッション ID を少なくとも 128
ビットにしておく必要があります。
<literal>session.sid_bits_per_character</literal>
に適切な値を指定することを忘れないようにしましょう。
そうしないと、脆弱なセッション ID を使うことになってしまいます。
</para>
</tip>
<note>
<simpara>
この設定は PHP 7.1.0 で導入されました。
</simpara>
</note>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.session.sid-bits-per-character">
<term>
<parameter>session.sid_bits_per_character</parameter>
<type>int</type>
</term>
<listitem>
<simpara>
<literal>session.sid_bits_per_character</literal>
エンコードされたセッション ID 文字のビット数を指定します。指定できる値は
'4' (0-9, a-f)、'5' (0-9, a-v)、'6' (0-9, a-z, A-Z, "-", ",") です。
</simpara>
<simpara>
デフォルトは 4 です。大きいほどセッション ID が強力になります。
大半のシステムでは、5 を推奨します。
</simpara>
<para>
</para>
<note>
<simpara>
この設定は PHP 7.1.0 で導入されました。
</simpara>
</note>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.session.hash-function">
<term>
<parameter>session.hash_function</parameter>
<type>mixed</type>
</term>
<listitem>
<simpara>
<literal>session.hash_function</literal> によりセッション ID
を生成するために使用されるハッシュアルゴリズムを指定することが可能です。
'0' は MD5 (128 ビット) で、'1' は SHA-1 (160 ビット) を意味します。
</simpara>
<para>
<link linkend="ref.hash">hash 拡張モジュール</link>
の任意のアルゴリズムが (この拡張モジュールが使用可能な場合に)
指定できます。たとえば
<literal>sha512</literal>
<literal>whirlpool</literal> などです。
サポートされているアルゴリズムの一覧は、
<function>hash_algos</function> 関数で取得できます。
</para>
<note>
<para>
この設定は、PHP 7.1.0 で削除されました。
</para>
</note>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.session.hash-bits-per-character">
<term>
<parameter>session.hash_bits_per_character</parameter>
<type>int</type>
</term>
<listitem>
<simpara>
<literal>session.hash_bits_per_character</literal> により
バイナリのハッシュデータを何らかの可読なデータに変換する際、
それぞれの文字に何ビットストアさせるかを定義することが可能です。
指定可能な値は、'4' (0-9, a-f)、'5' (0-9, a-v) そして
'6' (0-9, a-z, A-Z, "-", ",") です。
</simpara>
<note>
<para>
この設定は、PHP 7.1.0 で削除されました。
</para>
</note>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.session.upload-progress.enabled">
<term>
<parameter>session.upload_progress.enabled</parameter>
<type>bool</type>
</term>
<listitem>
<simpara>
アップロードの進捗を追跡して <varname>$_SESSION</varname> 変数に格納するかどうか。
デフォルトは 1 で、この機能は有効になっています。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.session.upload-progress.cleanup">
<term>
<parameter>session.upload_progress.cleanup</parameter>
<type>bool</type>
</term>
<listitem>
<simpara>
すべての POST データを読み終えた (つまり、アップロードが完了した)
時点ですぐに進捗状況を消去するかどうか。
デフォルトは 1 で、この機能は有効になっています。
</simpara>
<note>
<simpara>
この機能を有効にしておくことを強くおすすめします。
</simpara>
</note>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.session.upload-progress.prefix">
<term>
<parameter>session.upload_progress.prefix</parameter>
<type>string</type>
</term>
<listitem>
<simpara>
アップロードの進捗を <varname>$_SESSION</varname> で管理するときに使うキーのプレフィックス。
このキーを
<literal>$_POST[ini_get("session.upload_progress.name")]</literal>
の値と連結して、一意なインデックスを作ります。
</simpara>
<simpara>
デフォルトは "upload_progress_" です。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.session.upload-progress.name">
<term>
<parameter>session.upload_progress.name</parameter>
<type>string</type>
</term>
<listitem>
<simpara>
進捗情報を <varname>$_SESSION</varname> に格納するときに使うキーの名前。
<link linkend="ini.session.upload-progress.prefix">session.upload_progress.prefix</link>
も参照ください。
</simpara>
<simpara>
<literal>$_POST[ini_get("session.upload_progress.name")]</literal>
が渡されていない場合や存在しない場合は、アップロードの進捗を記録しません。
</simpara>
<simpara>
デフォルトは "PHP_SESSION_UPLOAD_PROGRESS" です。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.session.upload-progress.freq">
<term>
<parameter>session.upload_progress.freq</parameter>
<type>mixed</type>
</term>
<listitem>
<simpara>
アップロードの進捗を更新する頻度を定義します。
バイト数 (100 バイトごとに進捗を更新するなど)
あるいはパーセンテージ (ファイル全体のサイズの 1% ごとに進捗を更新するなど)
で指定できます。
</simpara>
<simpara>
デフォルトは "1%" です。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.session.upload-progress.min-freq">
<term>
<parameter>session.upload_progress.min_freq</parameter>
<type>int</type>
</term>
<listitem>
<simpara>
更新間隔の最小値。単位は秒。
デフォルトは "1" (1 秒) です。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.session.lazy-write">
<term>
<parameter>session.lazy_write</parameter>
<type>bool</type>
</term>
<listitem>
<simpara>
<literal>session.lazy_write</literal> を 1 に設定すると、
セッションのデータが変更されたときにだけ再書き込みを行います。
デフォルトは 1 で、この機能は有効になっています。
</simpara>
</listitem>
</varlistentry>
</variablelist>
</para>
<para>
アップロードの進捗は、
session.upload_progress.enabled を有効にして
$_POST[ini_get("session.upload_progress.name")] を設定するまでは登録されません。
この機能の詳細は <link linkend="session.upload-progress">セッションのアップロードの進捗</link>
を参照ください。
</para>
</section>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->