summaryrefslogtreecommitdiffstats
path: root/lib/user.php
diff options
context:
space:
mode:
authorFlorian Preinstorfer <nblock@archlinux.us>2012-03-13 16:00:53 +0100
committerRobin Appelman <icewind@owncloud.com>2012-04-12 19:15:38 +0200
commitb86f2069ff1f434373c0babe0c28db5ee431498e (patch)
tree3c593d0414194982d43f9b1007f86ec4285e1435 /lib/user.php
parent2f3c0a6d804609aa908b8e938943e3ab8679b0a9 (diff)
downloadnextcloud-server-b86f2069ff1f434373c0babe0c28db5ee431498e.tar.gz
nextcloud-server-b86f2069ff1f434373c0babe0c28db5ee431498e.zip
Fix a session fixation vulnerability
- regenerate the session for every successful login - properly destroy a session Further information can be found on: https://en.wikipedia.org/wiki/session_fixation
Diffstat (limited to 'lib/user.php')
-rw-r--r--lib/user.php6
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/user.php b/lib/user.php
index fda19a33154..8c27ec30cc2 100644
--- a/lib/user.php
+++ b/lib/user.php
@@ -186,7 +186,7 @@ class OC_User {
* @param $password The password of the user
* @returns true/false
*
- * Log in a user - if the password is ok
+ * Log in a user and regenerate a new session - if the password is ok
*/
public static function login( $uid, $password ){
$run = true;
@@ -195,6 +195,7 @@ class OC_User {
if( $run ){
$uid=self::checkPassword( $uid, $password );
if($uid){
+ session_regenerate_id();
self::setUserId($uid);
OC_Hook::emit( "OC_User", "post_login", array( "uid" => $uid, 'password'=>$password ));
return true;
@@ -221,7 +222,8 @@ class OC_User {
*/
public static function logout(){
OC_Hook::emit( "OC_User", "logout", array());
- $_SESSION['user_id'] = false;
+ session_unset();
+ session_destroy();
OC_User::unsetMagicInCookie();
return true;
}