99

PHP apps自分のCookieをとして設定するにはどうすればよいHttpOnly cookiesですか?

4

11 に答える 11

127

Apache での PHP 独自のセッション Cookie の場合:
これを Apache 構成に追加するか、.htaccess

<IfModule php5_module>
    php_flag session.cookie_httponly on
</IfModule>

これは、前に呼び出される限り、スクリプト内で設定することもできますsession_start()

ini_set( 'session.cookie_httponly', 1 );
于 2012-01-04T11:41:46.030 に答える
99
  • Cookieについては、この回答を参照してください。
  • PHP独自のセッションCookiePHPSESSIDデフォルトでは)については、@richieの回答を参照してください

setcookie()and関数は、PHP 5.2.0の暗黒時代にsetrawcookie()ブール型パラメーターを導入し、これを素晴らしく簡単にしました。httponly構文に従って、7番目のパラメーターをtrueに設定するだけです。

簡潔にするために簡略化された関数構文

setcookie(    $name, $value, $expire, $path, $domain, $secure, $httponly )
setrawcookie( $name, $value, $expire, $path, $domain, $secure, $httponly )

PHP <8では、NULLデフォルトのままにしておきたいパラメーターを指定します。

PHP> = 8では、名前付きパラメーターを使用することでメリットが得られます。名前付きパラメータについては、この質問を参照してください。

setcookie( $name, $value, httponly:true )

header()古い低レベルの関数を使用することもできます。

header( "Set-Cookie: name=value; HttpOnly" );

パラメータを設定する必要があるかどうかも検討することをお勧めしSecureます。

于 2008-08-31T14:38:41.730 に答える
15

httponlyPHP セッション Cookie はデフォルトでは使用されないことに注意してください。

それを行うには:

$sess_name = session_name();
if (session_start()) {
    setcookie($sess_name, session_id(), null, '/', null, null, true);
}

ここでいくつかの注意事項があります。

  • session_name() 事前に電話する必要がありますsession_start()
  • また、これはデフォルト パスを '/' に設定します。これは Opera に必要ですが、PHP セッション Cookie もデフォルトでは行いません。
于 2008-10-30T14:57:19.637 に答える
13

HttpOnly はクロスサイト スクリプティングを停止しないことに注意してください。代わりに、可能性のある 1 つの攻撃を無力化します。現在、これは IE でのみ行われます (FireFox は XmlHttpRequest で HttpOnly Cookie を公開し、Safari はそれをまったく尊重しません)。必ず HttpOnly をオンにしますが、それと引き換えに出力フィルタリングとファズ テストを 1 時間も行わないでください。

于 2008-09-10T21:40:41.723 に答える
9
<?php
//None HttpOnly cookie:
setcookie("abc", "test", NULL, NULL, NULL, NULL, FALSE); 

//HttpOnly cookie:
setcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE); 

?>

ソース

于 2008-08-31T14:36:36.993 に答える
6

setcookie関数で指定できます。phpマニュアルを参照してください。

setcookie('Foo','Bar',0,'/', 'www.sample.com'  , FALSE, TRUE);
于 2008-08-31T14:37:06.087 に答える
5

ここでイリアからの説明...5.2だけですが

httpPHP5.2でのCookieフラグのサポートのみ

その記事で述べられているように、以前のバージョンのPHPではヘッダーを自分で設定できます

header("Set-Cookie: hidden=value; httpOnly");
于 2008-08-31T14:35:02.177 に答える
4

これをヘッダーファイルで使用できます。

// setup session enviroment
ini_set('session.cookie_httponly',1);
ini_set('session.use_only_cookies',1);

このようにして、今後のすべてのセッション Cookie は httponly を使用します。

  • 更新しました。
于 2013-05-27T22:24:17.763 に答える