• 账号安全 syyh


    一、概述

    账号是进入系统的第一道关卡、是系统的“大门”,在满足正常功能的基础上,安全性也是其中一个重要属性。
    本文主要从账号安全的角度,讲述在正常用户使用过程中可能遇到的安全风险,其实还有另一个方面,从恶意用户——黑车的角度,也就是账号风控,本文仅关注前者——账号安全:

    • 账号功能安全
    • 账号数据存储安全
    • 账号数据传输安全

    二、账号功能安全

    在账号的生命周期中,包括了 注册、登录、修改密码、修改账户名、密保/密码找回、绑定账号、解绑账号、登出等操作,分别会从这几个方面来说说风险点及安全加固措施。

    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证书进行安全校验,防止出现中间人攻击的风险。

    参考:
    《互联网企业安全高级指南》
    《风控要略》

  • 相关阅读:
    APP端自动化 之 Windows-Android-Appium环境搭建
    Python3学习笔记-继承、封装、多态
    Python3学习笔记-构造函数与析构函数
    多线程同时操作界面使用互斥体
    AX2009 C#客户端通过Web service批量审核工作流(一)
    AX2009报表发送邮件(二)
    AX2009报表发送邮件(一)
    AX2012分页显示数据
    AX2012 菜单根据不同公司动态显示
    AX2012使用域用户组
  • 原文地址:https://www.cnblogs.com/ffx1/p/15733408.html
Copyright © 2020-2023  润新知