mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
[SS-2016-008] Reset Member::Salt
on password change
This commit is contained in:
parent
4d9f929ca3
commit
298f61521c
@ -786,8 +786,8 @@ class Member extends DataObject implements TemplateGlobalProvider {
|
||||
* @return string Returns a random password.
|
||||
*/
|
||||
public static function create_new_password() {
|
||||
if(file_exists(Security::get_word_list())) {
|
||||
$words = file(Security::get_word_list());
|
||||
if(file_exists(Security::config()->word_list)) {
|
||||
$words = file(Security::config()->word_list);
|
||||
|
||||
list($usec, $sec) = explode(' ', microtime());
|
||||
srand($sec + ((float) $usec * 100000));
|
||||
@ -799,7 +799,7 @@ class Member extends DataObject implements TemplateGlobalProvider {
|
||||
} else {
|
||||
$random = rand();
|
||||
$string = md5($random);
|
||||
$output = substr($string, 0, 6);
|
||||
$output = substr($string, 0, 8);
|
||||
return $output;
|
||||
}
|
||||
}
|
||||
@ -858,6 +858,9 @@ class Member extends DataObject implements TemplateGlobalProvider {
|
||||
// Note that this only works with cleartext passwords, as we can't rehash
|
||||
// existing passwords.
|
||||
if((!$this->ID && $this->Password) || $this->isChanged('Password')) {
|
||||
//reset salt so that it gets regenerated - this will invalidate any persistant login cookies
|
||||
// or other information encrypted with this Member's settings (see self::encryptWithUserSettings)
|
||||
$this->Salt = '';
|
||||
// Password was changed: encrypt the password according the settings
|
||||
$encryption_details = Security::encrypt_password(
|
||||
$this->Password, // this is assumed to be cleartext
|
||||
|
Loading…
Reference in New Issue
Block a user