2012-05-09 75 views
11

CodeigniterでHTTPOnlyとしてCookieを設定する方法を知りたいと思います。私はドキュメンテーションを見直し、このフラグを設定する方法を見ていませんでした。codeigniterのHTTPOnlyフラグでクッキーを設定する

私はまた、クッキーのための安全なフラグを設定するために見て、config.phpファイルでそれを見つけた:

$config['cookie_secure'] = TRUE; 

しかし、config.phpの中HttpOnlyのオプションがありませんでした。

すべてのCookieをHTTPOnlyに設定するにはどうすればよいですか?そして、それがフレームワークで終わったら、そのコードが自分の学習のどこにあるのか(そしてデフォルトが何であるのか)を知ることは役に立ちます。

答えて

23

幸いにも、あなたが表示されます機能_set_cookieでGitHubの

Session.phpのソースコードを表示できます。

// Set the cookie 
setcookie(
    $this->sess_cookie_name, 
    $cookie_data, 
    $expire, 
    $this->cookie_path, 
    $this->cookie_domain, 
    $this->cookie_secure, 
    $this->cookie_httponly 
); 

$this->cookie_httponlyの値が__constructに割り当てられ、デフォルトはFALSEですが、あなたが設定することができていますconfig.php通じTRUEに、次のように:

$config['cookie_httponly'] = TRUE; 

これはENABLますHTTPOnlyになるようにフレームワーク内のクッキー

+0

ありがとうございます。受け入れられupvoted。私は頼んだことが良いことです。 – chowwy

+2

これはバージョン2.1では機能しなくなりました。3のようになります。 – ethicalhack3r

3

2.1.3 foreachにcookie_httponlyが含まれていないため、設定されません。

foreach (array('sess_encrypt_cookie', 'sess_use_database', 'sess_table_name', 'sess_expiration', 'sess_expire_on_close', 'sess_match_ip', 'sess_match_useragent', 'sess_cookie_name', 'cookie_path', 'cookie_domain', 'cookie_secure', 'sess_time_to_update', 'time_reference', 'cookie_prefix', 'encryption_key') as $key) 

また、それはここで設定していません...

setcookie(
       $this->sess_cookie_name, 
       $cookie_data, 
       $expire, 
       $this->cookie_path, 
       $this->cookie_domain, 
       $this->cookie_secure 
      ); 
+0

これは私のテストで確認できますが、どのように設定することができますか? – ethicalhack3r

+0

それで今どうすればいいですか? –

8

ため、私は

のCodeIgniterのセッションMGMT中drwabackが自分であることが判明 -

  1. 2.1 .3バージョンのcookie_httponlyフラグはありません。
    ソリューション:
    ステップ1:あなたが図書館で自分のMy_session.phpを作成し、システムのセッションファイルを拡張またはSession.php(内システム - > library-> Session.phpファイル)を変更する必要があり
    ステップ2:_set_cookieを見つけます( $ cookie_data = NULL)関数で、後藤はsetcookie()とあなたがOWASP ZAPツールで "TRUE" とあれば、テストを追加している場合にもかかわらず

    setcookie( $this->sess_cookie_name, $cookie_data, $expire,
    $this->cookie_path, $this->cookie_domain, $this->cookie_secure, TRUE ); // add True flag.

  2. よう修正し、
    いくつかの時間は、それはあなたが問題をCSRF与えるでしょ
    つまり:HTTPONLYが真ではない、
    セキュアフラグが有効ではありません。

    理由:sess_destroyの間、HTTPONLYおよびSecureフラグをnoneに設定しています。
    策:これらの問題は、私は、これは同様にあなたを助けることを願っています私に眠れぬ夜を与えたので

    // Kill the cookie 
    `setcookie(
          $this->sess_cookie_name, 
         addslashes(serialize(array())), 
         ($this->now - 31500000), 
         $this->cookie_path, 
         $this->cookie_domain, 
         TRUE, 
         TRUE 
        );` 
    

としてSession.phpにsess_destroy機能を更新します。 :)

関連する問題