Skip to main content

失效认证

风险一:允许自动攻击,如 凭证填充(credential stuffing)、暴风算法(Brute Force)#

解决方法

/**
* 设置重试次数键。
* @param {Object} req HTTP 请求
* @returns {String} 重试次数键
*/
function retryTimesKey(req) {
var identity = req.identity();
return 'RETRYTIMES:' + utils.crypto.sha256(identity.remoteAddress + identity.userAgent);
}
风险二:允许默认、常见弱密码,如 123456、admin#

解决方法

风险三:允许不完备的密码恢复流程,如 根据回答常识问题来找回密码#

解决方法 实现忘记密码流程尚未有工业标准,这里提供通用模型:

  1. 第一步:搜集用户识别身份数据,如 让用户填写手机号、邮箱地址;为了防止恶意尝试,需要有图形验证码
  2. 第二步:校验安全问题(可选)
  3. 第三步:发送令牌(手机的话就是短信验证码)到第三方渠道(手机、或邮箱),令牌必须设置有效期限,如10分钟
  4. 第四步:修改密码(Token + 新密码)
  5. 第五步:记录日志
风险四:允许非加密平文本传输#

解决方法

  • LTS 加密
风险五:Has missing or ineffective multi-factor authentication#

解决方法

风险六:允许 URL 中暴露 Session ID( URL Rewriting)#

解决方法

风险七:登录成功后未更新 Session IDs#

解决方法

风险八:登出或者一定时期非活跃状态时用户 Session 或授权 Token没有被正确的无效化#

解决方法