Changeset 1627

Show
Ignore:
Timestamp:
03/18/2010 04:11:33 AM (4 years ago)
Author:
BrianKoontz
Message:

More auto-login fixes; ported over the password "salt" functionality
from trunk (lost somewhere along the way). Refs #912.

Location:
branches/1.3
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • branches/1.3/actions/usersettings/usersettings.php

    r1593 r1627  
    227227                                $password_highlight = INPUT_ERROR_STYLE; 
    228228                                break; 
    229                         case (($update_option == 'pw') && md5($oldpass) != $user['password']): //wrong old password 
     229                        case (($update_option == 'pw') && md5($user['challenge'].$oldpass) != $user['password']): //wrong old password 
    230230                                $passerror = ERROR_INVALID_OLD_PASSWORD; 
    231231                                $pw_selected = 'selected="selected"'; 
     
    265265                                break; 
    266266                        default: 
     267                                $challenge = dechex(crc32(time())); 
    267268                                $this->Query(" 
    268269                                        UPDATE ".$this->GetConfigValue('table_prefix')."users 
    269                                         SET password = '".md5(mysql_real_escape_string($password))."' 
    270                                         WHERE name = '".$user['name']."'" 
     270                                        SET password = '".md5($challenge.mysql_real_escape_string($password))."', 
     271                                        challenge = '".$challenge."' WHERE name = '".$user['name']."'" 
    271272                                        ); 
    272273                                unset($this->specialCache['user'][strtolower($name)]);  //invalidate cache if exists #368 
    273                                 $user['password'] = md5($password); 
     274                                $user['password'] = md5($challenge.$password); 
    274275                                $this->SetUser($user); 
    275276                                $passsuccess = SUCCESS_USER_PASSWORD_CHANGED; 
     
    386387                                        $password_highlight = INPUT_ERROR_STYLE; 
    387388                                        break; 
    388                                 case (md5($this->GetSafeVar('password', 'post')) != $existingUser['password']): 
     389                                case (md5($existingUser['challenge'].$this->GetSafeVar('password', 'post')) != $existingUser['password']): 
    389390                                        $error = ERROR_INVALID_PASSWORD; 
    390391                                        $password_highlight = INPUT_ERROR_STYLE; 
     
    482483                                break; 
    483484                        default: //valid input, create user 
     485                                $challenge = dechex(crc32(time())); 
    484486                                $this->Query("INSERT INTO ".$this->GetConfigValue('table_prefix')."users SET ". 
    485487                                        "signuptime = now(), ". 
    486488                                        "name = '".mysql_real_escape_string($name)."', ". 
    487489                                        "email = '".mysql_real_escape_string($email)."', ". 
    488                                         "password = md5('".mysql_real_escape_string($this->GetSafeVar('password', 'post'))."')"); 
     490                                        "challenge = '".$challenge."', ". 
     491                                        "password = md5('".$challenge.mysql_real_escape_string($this->GetSafeVar('password', 'post'))."')"); 
    489492                                unset($this->specialCache['user'][strtolower($name)]);  //invalidate cache if exists #368 
    490493 
  • branches/1.3/setup/install.php

    r1622 r1627  
    227227        // Register admin user 
    228228        $challenge = dechex(crc32(time())); 
     229        $pass_val = md5($challenge.(mysql_real_escape_string($_POST['password']))); 
    229230        // Delete existing admin user in case installer was run twice 
    230231        @mysql_query('delete from '.$config['table_prefix'].'users where name = \''.$config['admin_users'].'\'', $dblink); 
    231232    test(__('Adding admin user').'...', 
    232                 @mysql_query("insert into ".$config["table_prefix"]."users set name = '".$config["admin_users"]."', password = md5('".mysql_real_escape_string($_POST['password'])."'), email = '".$config["admin_email"]."', signuptime = now(), challenge='".$challenge."'", $dblink), "Hmm!", 0); 
     233                @mysql_query("insert into ".$config["table_prefix"]."users 
     234                        set name = '".$config["admin_users"]."', password = '".$pass_val."', email = '".$config["admin_email"]."', signuptime = now(), challenge='".$challenge."'", $dblink), "Hmm!", 0); 
    233235 
    234236        // Auto-login wiki admin 
     
    239241 
    240242        // Set cookies 
    241         SetCookie('user_name', $config['admin_users'], time() + PERSISTENT_COOKIE_EXPIRY, $wikka_cookie_path);  
     243        SetCookie('user_name@wikka', $config['admin_users'], time() + PERSISTENT_COOKIE_EXPIRY, $wikka_cookie_path);  
    242244        $_COOKIE['user_name'] = $config['admin_users'];  
    243         SetCookie('pass', $pass_val, time() + PERSISTENT_COOKIE_EXPIRY, $wikka_cookie_path);  
     245        SetCookie('pass@wikka', $pass_val, time() + PERSISTENT_COOKIE_EXPIRY, $wikka_cookie_path);  
    244246        $_COOKIE['pass'] = $pass_val;  
    245247