Skip to content
Snippets Groups Projects
  • Benjamin Mack's avatar
    [TASK] Only set FE user cookie if session data or user logged in · 4d25aee5
    Benjamin Mack authored
    Currently the FE session cookie is set on every request
    and since 4.2 the sessionID is generated again on every
    request unless the user is logged in. This is implemented
    for avoiding the security problem of the
    session fixation (see #19831).
    
    If an installation does not use FE session cookies at all,
    an option (TYPO3_CONF_VARS->FE->dontSetCookie)
    never sets the cookie.
    
    As the current behavior for non-logged-in FE calls
    is not usable, the behaviour is changed to only set
    the cookie if the user is logged in or the session data
    is modified. The last example is helpful for websites
    with e.g. a shopping cart on non-logged-in pages.
    Currently, if an extension is trying to implement the
    latter, the extension needs to hook or XCLASS the
    FrontendUserAuthentication class to set the cookie
    whenever needed.
    
    Additionally, the security problem still exists if the
    cookie is not set by TYPO3 itself, that's why the
    cookie can only be set if there is a valid entry in
    fe_user_sessions.
    
    if using external caching (e.g. reverse proxies),
    a "unneeded" cookie is always set currently,
    which extensions like EXT:moc_varnish or
    EXT:cachinfo mock to only set the cookie
    if needed.
    
    The attached patch removes the default-setting
    of a cookie in the frontend, and only triggers
    the setcookie() function when sessionData is
    added or a user is logged-in.
    
    Resolves: #55549
    Releases: 6.2
    Change-Id: If478bc00c2c55dda0cc38a898a1288098891671f
    Reviewed-on: https://review.typo3.org/27230
    Reviewed-by: Markus Klein
    Tested-by: Markus Klein
    Reviewed-by: Wouter Wolters
    Tested-by: Wouter Wolters
    Reviewed-by: Benjamin Mack
    Tested-by: Benjamin Mack
    4d25aee5
To find the state of this project's repository at the time of any of these versions, check out the tags.