どのように私は私にクッキーを設定することができますPHP apps
ようにHttpOnly cookies
?
$cookie->setHttpOnly(true);
でgithub.com/delight-im/PHP-Cookie
どのように私は私にクッキーを設定することができますPHP apps
ようにHttpOnly cookies
?
$cookie->setHttpOnly(true);
でgithub.com/delight-im/PHP-Cookie
回答:
PHPSESSID
デフォルトでは)、参照リッチーの答え@setcookie()
およびsetrawcookie()
機能は、導入httponly
容易なこの素敵なを作り、バックPHP 5.2.0の暗黒の年齢では、パラメータを。構文に従って、7番目のパラメーターをtrueに設定するだけです。
簡潔にするために簡略化された関数構文
setcookie( $name, $value, $expire, $path, $domain, $secure, $httponly )
setrawcookie( $name, $value, $expire, $path, $domain, $secure, $httponly )
NULL
デフォルトのままにするパラメータを入力します。secure
パラメータを設定する必要があるかどうかを検討することもできます。
より古いレベルのheader()
関数を使用することもできます。
header( "Set-Cookie: name=value; httpOnly" );
set_cookie
と、他のパラメーターを設定する必要がない場合、最終的に呼び出しをより簡潔にすることができます。例えばset_cookie($name, $value, httponly: true)
。
Apache上のPHP独自のセッションCookieの場合:
これをApache構成に追加するか、.htaccess
<IfModule php5_module>
php_flag session.cookie_httponly on
</IfModule>
これは、以前に呼び出されている限り、スクリプト内でも設定できsession_start()
ます。
ini_set( 'session.cookie_httponly', 1 );
php.ini
。
php_value
しphp_flag
ても機能しません。私はちょうど..私のサーバー上でそれを試してみました
php_flag
場合は、値も変更する必要があります- on
またはにoff
-マニュアルを参照してください。
PHPセッションCookieはhttponly
デフォルトでは使用しないことに注意してください。
それを行うには:
$sess_name = session_name();
if (session_start()) {
setcookie($sess_name, session_id(), null, '/', null, null, true);
}
ここで注目すべきいくつかの項目:
session_name()
前に電話する必要がありますsession_start()
HttpOnlyはクロスサイトスクリプティングを停止しないことに注意してください。代わりに、1つの可能な攻撃を無力化し、現在IEでのみそれを実行しています(FireFoxはXmlHttpRequestでHttpOnly Cookieを公開し、Safariはそれをまったく尊重しません)。必ずHttpOnlyをオンにしてください。ただし、その代わりに、1時間の出力フィルタリングやファズテストも行わないでください。
ここからIliaからの説明... 5.2だけですが
PHP 5.2でのhttpOnly cookieフラグのサポート
その記事で述べたように、以前のバージョンのPHPでヘッダーを自分で設定できます
header("Set-Cookie: hidden=value; httpOnly");
あなたはそれをset cookie関数で指定することができますphpのマニュアルを参照してください
setcookie('Foo','Bar',0,'/', 'www.sample.com' , FALSE, TRUE);
これはヘッダーファイルで使用できます。
// setup session enviroment
ini_set('session.cookie_httponly',1);
ini_set('session.use_only_cookies',1);
これにより、今後のすべてのセッションCookieでhttponlyが使用されます。
PHP> = 7.0以降のよりエレガントなソリューション
session_start(['cookie_lifetime' => 43200,'cookie_secure' => true,'cookie_httponly' => true]);