ID:               24096
 Comment by:       mjs15451 at hotmail dot com
 Reported By:      pablo_sole at myp dot net dot ar
 Status:           Open
 Bug Type:         Feature/Change Request
 Operating System: *
 PHP Version:      5.*, 4.*
 New Comment:

Thanks, Ilia, for implementing this option in PHP 5.1. I know many
people will be happy about this.  :-)


Previous Comments:
------------------------------------------------------------------------

[2005-04-09 01:42:36] mjs15451 at hotmail dot com

Don't know if this works on PHP 4, but this is what I did to get
session_regenerate_id to delete the old session file in PHP 5.  Replace
the session_regenerate_id function in session.c with this function I
modded:

PHP_FUNCTION(session_regenerate_id)
{
        char *oldID = empty_string;
        if (PS(session_status) == php_session_active) {
                if (PS(id)) {
                        oldID = PS(id); //save old id
                        efree(PS(id));
                }

                PS(id) = PS(mod)->s_create_sid(&PS(mod_data), NULL
TSRMLS_CC);

                php_session_reset_id(TSRMLS_C);

                if (oldID != empty_string)
PS(mod)->s_destroy(&PS(mod_data), oldID TSRMLS_CC); //delete old
session file

                RETURN_TRUE;
        }
        RETURN_FALSE;
}

------------------------------------------------------------------------

[2005-04-08 17:38:28] mjs15451 at hotmail dot com

I would definitely be for auto-destruction of the old session file as I
have come upon this problem as well and I have made a similar
enhancement suggestion under bug: http://bugs.php.net/bug.php?id=32631

------------------------------------------------------------------------

[2003-06-10 23:50:40] pablo_sole at myp dot net dot ar

You're right, in my own case i use this function to do a per-page
session (following OWASP's "Guide to Build Secure Web Applications" or
something like that), so what i'm doing is to refresh the id every time
a user do a request, but without lost the "statefulness". So, if you
think this need to be supported by the php sessions code, was an honor
help you, if not... i already do a little patch to support it on my own
server.

pablo.

------------------------------------------------------------------------

[2003-06-09 23:10:25] [EMAIL PROTECTED]

It is debatable whether the function should destroy the old session. 
The current behaviour is useful under a number of circumstances.
Auto-destruction could be added as a new feature though.

 -> Feature/Change request.

------------------------------------------------------------------------

[2003-06-09 09:42:08] pablo_sole at myp dot net dot ar

testing the new session_regenerate_id i see that after upgrade de SID,
not unlink the old session file so, when you regenerate many times the
session could be used to make a DoS, or at least is not what it's
expected from the function.

Checking the source code, the routine free the SID and assign the new,
but not unlink the old file (just like in the php_session_destroy
routine).

A workaround could be unlink manualy on the fly, or patch the session.c
file.

Sorry my poor english, but is not my native language.

Any question, mail me.

pablo.

PD: I not have any "specific setup" or extra modules compiled in, and
for that reason i don't put it here.


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=24096&edit=1

Reply via email to