账号安全
一、概述
账号是进入系统的第一道关卡、是系统的“大门”,在满足正常功能的基础上,安全性也是其中一个重要属性。
本文主要从账号安全的角度,讲述在正常用户使用过程中可能遇到的安全风险,其实还有另一个方面,从恶意用户——黑车的角度,也就是账号风控,本文仅关注前者——账号安全:
- 账号功能安全
- 账号数据存储安全
- 账号数据传输安全
二、账号功能安全
在账号的生命周期中,包括了 注册、登录、修改密码、修改账户名、密保/密码找回、绑定账号、解绑账号、登出等操作,分别会从这几个方面来说说风险点及安全加固措施。
1、注册
注册环节最大的安全风险是防黑产的恶意注册、垃圾注册,例如“羊毛党”日常养号的批量注册;其次是密码设置,防止若密码,用户设置密码时可对密码强度进行校验,并在前端给出强度提示。
针对恶意注册、垃圾注册,常见的防御手段是增加验证码,提高黑产批量操作的成本、增大利用难度,如:图片验证码、邮件验证码、短信验证码、语音验证码、甚至是电话验证码等。
密码设置需要保证基本的安全强度:8个字符以上,建议至少包含字母+数字+其他字符,如果是设置登录密码下的二级密码(支付密码等):禁止与登录密码相同。
2、登录
登录环节,需要防范暴力破解、撞库、非常用设备登录、异地登录,以及回话凭证被窃取等。
- 爆破
防止账号被爆破,可以设置验证码,登录连续错误尝试次数不得超过一定上限,比如:连续错误5次,则冻结账号2h后才能再次登陆,10次则发送邮件与短信通知用户,20次则当天禁止登录; - 撞库/扫号
如果短时间内是否有很多不存在的用户名尝试登录,这种现象可能是撞库;如果短时间内有大量账户密码尝试错误(固定弱口令如123456,变换用户名),如果出现这种现象,可判定为扫号。在监控到针对部分账户的扫号与撞库行为时,应对自身账户系统中出现异常状况的账户及时进行安全提示,建议修改密码,并确保其绑定邮箱账户的安全性。
监控到来自固定IP、或(ID Cookie标识的)固定端的扫号与撞库行为时,建议对这些源做应急封禁处理;如果可以获取到外界泄露的其他厂商账户数据,应及时统计分析,判定对自身账户数据的影响范围,对很可能受影响的部分账户,及时发出安全提示邮件/短信,建议修改密码,并确保其绑定邮箱账户的安全性;对可能受影响的重点业务产品线及时同步可能受影响的账户信息、并提供账号异常状态判定的服务。
- 非常用设备/异地登录
在其他设备或异地登录时,可以通过二次校验来验证用户身份,例如手机号/邮箱验证等。 - 防止凭证窃取
为了防止网页前端XSS等漏洞获取登录后的会话Cookie,登录后需要将会话Cookie以HttpOnly属性的方式种到端上(在种之前,为了兼容性,可以先探测浏览器是否支持HttpOnly属性),且不能将会话Cookie输出到网页内容中;
3、修改密码/找回密码
防止逻辑漏洞造成的越权修改/越权找回、CSRF漏洞:
1):首先验证绑定邮箱/手机号;
2):进行新密码设置时,首先确保对步骤1的结果进行了Check;
4、绑定邮箱/手机号
除了对要绑定的邮箱/手机号进行真实性验证(发送验证码并校验正确性),此处常常出现因为没有将用户凭证和邮箱/手机号进行绑定,造成的csrf/逻辑漏洞,导致正常用户账号被绑定到攻击者账户,造成账户信息泄露。
解绑、更换邮箱/手机号也是类似。
5、 账号退出登录
做好CSRF防范,防止用户登录后被黑客诱使恶意推出登录。
三、账号数据存储安全
防止数据库被拖,进而造成账号密码的批量破解、用户批量被钓鱼欺诈威胁等风险。
1、账号密码的存储采用高强度Hash+加密方案,如:AES_CFB( KEY, SHA ( MD5(passwd) + salt)),其中salt对每个passwd不同,建议为:特定字符串+用户属性中稳定不变的值,如用户uid;
2、高价值账户以及敏感系统账户的敏感隐私信息,包括绑定邮件、手机号、身份号、银行卡号等,建议建议AES加密存储;
3、PC/移动客户端禁止存储明文密码数据,如果存储,则必须采用安全的加密方式,建议:RSA(public_key, MD5(passwd)+IMEI/Mac+timestamp);服务端校验密码前先用私钥解密,并判断设备ID与解密后的值是否一致,且加密值是否在有效期内,否则不用走到密码校验这一步,直接返回校验失败;
4、确保账号数据库的备份功能正常;
5、 确保账号数据库机器做好网络隔离,并在物理上确保其隔离性与安全性(水/火灾、盗窃等风险);
6、确保对账户数据库操作的接口是集中于一个独立子系统的,同时确保这个直接操作数据库的子系统与其他系统隔离部署,便于收敛数据操作的安全管理与策略部署。
四、账号数据传输安全
防止网络嗅探、网络中间人攻击。
账号系统相关的所有接口都必须走HTTPS加密传输,且移动端接入账户相关接口时,必须对HTTPS证书进行安全校验,防止出现中间人攻击的风险。
参考:
《互联网企业安全高级指南》
《风控要略》