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