癥狀:使用ecshop 找回密碼并重置新密碼后沒(méi)法使用新密碼登陸
分析結(jié)果:
ecshop密碼原則上使用1次性md5加密,當(dāng)注冊(cè)新用戶(hù)成功后視察數(shù)據(jù)庫(kù)密碼字段,確切為md5值
而當(dāng)用戶(hù)第1次登陸,ecshop做了1次非常牛逼的動(dòng)作,判斷用戶(hù)數(shù)據(jù)行是不是存在ec_salt, 如果不存在則生成1個(gè)ec_salt并重寫(xiě)密碼!
就是說(shuō),你注冊(cè)時(shí)寫(xiě)入數(shù)據(jù)庫(kù)的密碼和登陸后的密碼值產(chǎn)生了改變。以后再次登陸時(shí),使用ec_salt值與post的密碼進(jìn)行2次md5加密進(jìn)行驗(yàn)證
牛逼的地方在于,當(dāng)你使用密碼找回時(shí),其只是簡(jiǎn)單降密碼字段重置為1次性md5, 注意,此時(shí)ec_salt已存在值
用戶(hù)使用新密碼,舊的ec_salt(salt加密方式)進(jìn)行登陸,wtf,固然不能登陸
解決辦法:
本沒(méi)打算細(xì)看其程序底層,僅僅在includes/modules/integrates/ecshop.php line 170行,增加了,ec_salt=''
強(qiáng)迫在其登陸時(shí)重置ec_salt....