#6271: Solution to #5254 does not allow for "opting out" of the security measure
------------------------+---------------------------------------------------
    Reporter:  Ocean    |         Owner:           
        Type:  RFC      |        Status:  new      
    Priority:  Medium   |     Milestone:  1.2.x.x  
   Component:  Session  |       Version:  1.2 Final
    Severity:  Normal   |    Resolution:           
    Keywords:           |   Php_version:  n/a      
Cake_version:           |  
------------------------+---------------------------------------------------
Comment (by Ocean):

 ... thought about it some more...



 ... the following allows you to "opt-out": -

 {{{
 app/config/core.php

 /**
  * When set to false, cookie_secure will not automatically be set in an
 HTTPS environment
  * (anti "Surf Jacking":
 http://resources.enablesecurity.com/resources/Surf%20Jacking.pdf)
  */
         Configure::write('Session.cookieSecure', true);

 }}}

 ... a method is provided to secure/un-secure a session: -

 {{{
 cake/libs/session.php

 /**
  * Helper method to secure session cookie.
  *
  * @return void
  * @access public
  */
         function cookieSecure($secure=true) {
                 $iniSet = function_exists('ini_set');

                 if ($iniSet && env('HTTPS') &&
 Configure::read('Session.cookieSecure') && $secure) {
                         ini_set('session.cookie_secure', 1);
                 } elseif (!$secure) {
                         ini_set('session.cookie_secure', 0);
                 }
         }
 }}}

 ... the session is secured on logging in, and un-secured on logging out: -

 {{{
         function login($data = null) {
                 $this->__setDefaults();
                 $this->_loggedIn = false;

                 if (empty($data)) {
                         $data = $this->data;
                 }

                 if ($user = $this->identify($data)) {
                         $this->Session->secureCookie(true); // secure
 cookie on logging in
                         $this->Session->write($this->sessionKey, $user);
                         $this->_loggedIn = true;
                 }
                 return $this->_loggedIn;
         }

         function logout() {
                 $this->__setDefaults();
                 $this->Session->del($this->sessionKey);
                 $this->Session->del('Auth.redirect');
                 $this->Session->secureCookie(false); // un-secure cookie
 on logging out
                 $this->_loggedIn = false;
                 return Router::normalize($this->logoutRedirect);
         }
 }}}

 ... how's that?

-- 
Ticket URL: <https://trac.cakephp.org/ticket/6271#comment:2>
CakePHP : The Rapid Development Framework for PHP <https://trac.cakephp.org/>
Cake is a rapid development framework for PHP which uses commonly known design 
patterns like ActiveRecord, Association Data Mapping, Front Controller and MVC. 
Our primary goal is to provide a structured framework that enables PHP users at 
all levels to rapidly develop robust web applications, without any loss to 
flexibility.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"tickets cakephp" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/tickets-cakephp?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to