设计产品的账号体系时如何考虑安全性?

主要是视频产品的账号设计,为了基本的安全保障,需要做哪些设计呢?(另外为什么迅雷、优酷、爱奇艺的账号很容易被盗用......大厂的账号安全都不能保证吗?

回答 17 排序
mzcio 火星 打杂的

公司前段时间发生了用户账号被盗事件,虽然和我负责的模块没有太大关系,但也促使我去思考,如何从产品设计上去做好安全防范工作,保护用户的利益。

事情的经过是这样的,用户在我们的移动平台上进行着登录操作、业务操作、支付操作(用的自己公司的支付平台),这样或多或少都有些资金留在平台上,不良分子通过盗取用户账号进入到支付钱包用钱包里面的余额给自己手机充值,幸运的是因为支付没有推广起来,用户钱包的金额不是太大。

通过公司用户资金被盗事件,做为产品人员是可以通过一些技术手段或者风控规则来减少此类事情发生的,那究竟怎么来设计呢?

我的想法是这样,首先要构建风控体系,建立模型来对用户的每一个操作行为进行跟踪和量化赋值,而这些量化的赋值也是要根据历史数据来设定,一旦用户的操作行为超出了对应赋值分数的阀值,系统就是启动安全保护机制,采取对应的措施进行限制。

系统层面的规则设计:

登陆阶段:

1、登录频次类规则:对同一用户、手机号、设备号进行频次及失败登陆次数的监控。当在短时间内频繁登录失败,可以在一定的失败次数后(如三次)要求用户输入图形码或者手机验证码进行登陆,防止账号密码被暴力验证。当频繁登陆异常超过最高等级的安全阀值时(如密码错误5次),就可以 禁止该账户在某段时间内进行任何操作。

2、设备更换规则:账号可以和设备指纹进行绑定,但一旦更换设备进行登陆,系统识别出不符合该用户历史行为规则及设备时,需要用户输入手机验证码进行登录。

3、IP地址不一致:当该账户登陆的地址与常用登陆的IP地址不一致时,系统会进行短信或者邮件等提醒,如网易、魔兽战网。

操作阶段:

1、不正常的页面浏览访问及操作路径:系统对用户的页面访问及操作路径与历史访问记录进行对比判断,当风控系统判断出和用户历史的操作记录不一致时(如我们的用户平时都是在白天进行账号登陆操作,突然某天在夜间或者凌晨进行账号的登陆操作,那系统可以判断为异常),自动采取安全保护机制,根据不同的安全阀值进行短信提醒、强制验证码登录或者禁止在某段时间内进行任何操作。

支付阶段:

1、设置支付密码:对大额支付都需要进行支付密码或者支付验证码操作。

2、不符合正常常理的规则:同一个账号或者设备在极短的时间内在2个不同的城市进行支付操作,此时风控系统就要启动对该账号的保护机制;

3、不正常的支付行为:同一个账号支付额度和支付次数与历史记录不付时,如该账号历史平均日支付次数在5次,金额在500-1000之间,一旦该账号的支付行为和历史支付的记录不符,风控系统就要介入进行保护。

本人也只是粗略的描述下自己对于当前业务下场景下账号被盗风控的想法,要真正建立起一套完整的风控规则,还需要在业务发展中不断去完善优化。

2016年11月23日
| 评论 19
匿名
千裏不留行 赤兔运动 产品经理

补充一些@mzcio 没有谈到的部分。

我司作为一个游戏网赚平台,防止刷小号、防止用户账号被盗也是一件比较重要的事,因为平台每个月都有送虚拟币的活动,几乎是注册都有钱送,几乎每个账户中都有虚拟币。

1、除了@mzcio说到的风控体系中,还有一点就是设计一个交易密码,涉及到跟钱相关的交易时,都要用交易密码进行验证,这样也避免了由于短信渠道经常出现问题而导致用户收不到验证码的问题,也为公司节省一笔短信费。

支付宝的安全系统在业内是出了名的,尤其是通过支付宝进行的交易行为,打造了系列安全措施。例如,支付宝产品体系中有一个风险判定工具——CTU,分别对账户、设备、位置、行为、关系、偏好每个大类制定了很多小的策略,CTU能根据策略对交易中的风险进行打分,区间在0-1。当交易的风险大于0.93时,支付宝系统将会直接拒绝交易;当交易的风险程度高,支付宝系统就会要求用户进行两次校验,以此判定用户究竟是不是账户本人。

除了支付宝,银行、网银产品都设置了交易密码。

2、后台中要有一个防作弊的查询,虽然是说防作弊,其实也对防止盗号有用。

防作弊查询可以查询同密码(3个或以上)、同IP登录(同IP登录3个或以上账号)、异常IP登录(同IP出现3个或者3个以上位置的登录)的所有用户,这样运营的童鞋可以每天查询一批异常账号并对账号进行明细查询,对可疑账号和危险账号及时作出标注处理。

例如,腾讯的天天酷跑就有一个专门的防作弊的查询。

作弊程序和外挂容易影响到游戏的平衡性,一旦查询到作弊,对玩家的惩罚方法包括:警告、封号、没收道具、分数清零、作弊者只能和作弊者游戏等……

然后,简单列举3个反玩家作弊方法:

  • 盗取他人账号并且进行恶意修改,可以采取的方法是进行用户标识符,以及社交账号绑定
  • 网络协议被玩家破解,或者重放攻击,这个可以采取验证校验码
  • 还有一种是函数被Hook,被挂起,可以进行隐藏和混淆、阻止跟踪调试以及组织外挂启动

《反恐精英:全球攻势》 为了防止玩家作弊,导入了可以由玩家自行监督作弊的防作弊系统——“Overwatch”。审查者(玩家群体中那些有资格和老练的玩家)鉴定那些存在作弊行为的DEMO,做出判决,包括“严重破坏”,“轻微破坏”和“证据不足”,确定作弊后可以对那些玩家执行暂时性的封禁。

2016年11月25日
| 评论 6
匿名
johnwoo 非知名公司 产品经理

对大部分网站,登录页面都是用户使用网站的首个页面,尤其对于2B的产品,不登录是不能进入真正的管理模块的。围绕登录的安全设计,关联到用户、企业的数据安全和企业系统的正常运行,但在实际的产品设计中,往往由于开发精力有限,没有得到足够的重视。

一、注册

1)密码规则

image.png

在注册环节,设置密码的基本规则。一般来讲,用户直觉上都会设置纯数字的密码,尤其是拿六位的身份证缩写设置,这种密码对于黑客来讲简直就是肉鸡,在不做特殊加密的情况下一秒就可以破解。要求用户避免纯数字的密码,而是数字+字母+特殊符号,这可以根据我们的安全级别来定,要在网页上对密码设置规则给出提示,否则用户根本摸不着头脑。

百度的密码设置提示:

image.png

2)密码强度提示

对用户的密码强度做提示:

一般纯数字或者数字较多连续的,判定为弱;

两种字符混合的,判定为中;

三种字符混的的,判定为强;

具体的规则由后台设定。

image.png

二、登录

1)基础登录界面

image.png

账号+密码,这是最普遍的产品设计。此图的账号实际上是用户的手机号。

这种方式简单,体验较好,但相对来讲安全性是最低的。

账号校验:账号是否存在,如果不存在,需要给出提示(账号不存在,注册新账号)

密码校验:校验密码,如果密码错误,需要给出提示,考虑到安全性,一般不会单独提示密码错误,只会提示:账号或密码错误

多次密码错误:为了防止恶意攻击,可以设置密码多次错误后,要求输入图形验证码或者暂时冻结该IP请求:连续输错三次,冻结30s;再连续输错三次,冻结30min;...

2)安全性:

a)图形验证码

image.png

现在稍微大点的网站都要求登录的时候输入验证码;验证码的形式多样,有图形数字验证码,拼图验证,图像验证等等衍生,这一类的都可以归类到验证码,目的是防止机器人;

b)语音验证码

以摩拜为例,注册的时候会收到电话语音,告知验证码,这种方式相比于图形验证码安全性当然更高,但成本也更高,而且用户要是信号不好,手机没电,体验上也较为繁琐,可能导致用户直接就跳出网页了

c)手机验证码

现在手机已经是生活必备品,通过手机验证码登录网站,费用较低,安全性又高,对于安全性有一定要求的2B网站,性价比是非常高的。

image.png

d)扫一扫

用过淘宝、京东的童靴都有印象,这个其实和手机验证码一样类似,借助手机这一个个人媒介,通过手机上的app扫一扫,登录网站。

这种方式的好处:一、安全性较高;二、促进app的活跃和转化;

但对于大部分的2B网站,可能并没有自己的app,所以适用性不如手机验证码。

e)CA证书

U盾这个产品曾经在个人当中也非常普及,现在随着各大银行采用手机验证码等方式做安全性验证,在个人当中渐渐少见,但在一些企业及金融行业中仍有不可替代的地位。实际上这个和https一个范畴,https除了有企业证书,还有个人证书,用户要登录或者支付前,服务器需要校验证书的合法性;对于大部分不是金融行业的网站来讲,U盾应该都是用不上的。

三、其他

1)系统安全机制

a)异常操作监控:异常操作包括密码多次输入错误、IP变更异常、设备变更异常等,不一一列举;

密码输入错误:同上文;

IP变更异常:对用户常用IP或上次登录IP段做记录,当用户登录的IP地址变化特别大的时候,要求重新输入账号、密码、手机验证码等;这个只要用过QQ的童靴,应该都有体验过;

设备变更异常:与IP监控类似,区别只是对用户的历史登录设备做监控,如MAC地址,IMEI号等;

b)关键环节保护:对涉及用户重要信息数据(如支付)、企业重要信息数据(如删除员工信息)等重要的流程上做保护,要求输入操作密码;

2)更彻底的:升级成https吧

http是无保护的网络传输协议,在客户端和服务器端做数据传输的时候,账号和密码都是明文的。当然,开发也可以调用JS的库做加密保护,但更彻底的,是把网站升级成https。现在淘宝、京东都已经在2016年全站升级成https了。如果做不到全站,至少可以先做登录页面。这一块由于我也不是搞网络安全的,就不展开说了。

匿名
谢红文爱米欢 爱米欢 产品经理

前面几位非常不错。写下我的:

1.紧跟时代最新成熟的技术手段——各种AI(人工智能)技术。比如人脸识别、声音识别、指纹识别等。

2.参考社会大厂大行业的风控安全:比如通信行业(eg.中国移动的APP)、银行、互金类APP等,他们的规则风控是怎样的。

匿名
云淡风轻~ 某电商公司 产品经理

帐号的风控体还是比较复杂的,至少对于登陆地变化、设备变化、登录锁定等情况都要要考虑到的。二次验证也是很重要的。当然,如果帐号涉及金钱就得更加复杂了。

2016年10月20日
| 评论 1
匿名
lanson PPTV 高级产品经理

这个问题的难点在于:怎么能保证用户的账号、密码即使被外人拿到,也没那么容易轻易的获取利益。

考虑到支付等行为,一般采用的可能性有:

1、防止被弱密码轮询,采用登录保护机制,连续输错3次以上密码需要输入动态验证码或短信密码,如有可能,这时应该通过短信、邮件等通知用户了;

2、多次尝试错误禁止登录一段时间,这个不但降低了破解风险,也为服务器减轻了一点压力;

3、常用地验证,比如经常在北京使用,突然到了上海,连续还输错3次,可以直接锁定一段时间;

4、支付密码单独设置,如果被允许的话,使用指纹、图案等密码;

5、用户不用设置密码,每次都采用server端校验,例如通过短信验证码方式登录;

6、HTTPS,这货能抵挡80%的风险,剩下来的都是牛人了;

7、流通货币非即时到账机制,或者流通货币可以通过手段召回机制进行追溯,这个很牛逼,目前就看到<魔兽世界>做到了....真心点个赞...

8、其他更具体、复杂,诸如通过多重加密,设备指纹(一般特指在用户的设备上生成的一种机器“指纹”,非物理指纹)等;

账号安全这事吧,你做的再特么好,遇到一个智商不高的用户,也没辙,关键还是从1-6入手,如果可能,加入7.

匿名

最近一段时间,公司做的活动经常被刷活动人员钻空子。所以有些经验和大家分享下。

1、活动规则

活动规则尽可能是一次性的。什么叫一次性的呢?就是用户产生一次的行为后,就不会再次参加这次活动。

2、活动形式

活动形式最好在自己的产品体系内。怎么理解呢?比如活动奖品送券、送积分等,不要直接或者间接的送钱,也不要直接或者间接的送东西。

3、技术

开发工程师应该在限制IP等技术上为活动屏蔽初级的黑客行为。

4、总量

每天、每小时、每分钟的活动产生的行为设置上限

2016年12月13日
| 评论 0
匿名
BarrySun 环球购物 产品

最近一段时间,公司做的活动经常被刷活动人员钻空子。所以有些经验和大家分享下。

1、活动规则

活动规则尽可能是一次性的。什么叫一次性的呢?就是用户产生一次的行为后,就不会再次参加这次活动。

2、活动形式

活动形式最好在自己的产品体系内。怎么理解呢?比如活动奖品送券、送积分等,不要直接或者间接的送钱,也不要直接或者间接的送东西。

3、技术

开发工程师应该在限制IP等技术上为活动屏蔽初级的黑客行为。

4、总量

每天、每小时、每分钟的活动产生的行为设置上限

2016年12月12日
| 评论 3
匿名
单兵作战 乐视视频 产品汪

刚好是视频行业,推荐一下我们移动端(乐视视频APP)已经上线的一个关于账号安全风控方面的功能:设备管理,该功能现已可在安卓端进行体验。

账号安全是一个基础但也是最重要的一块。站在用户角度来看,最大的问题就是账号被盗,不管是因为自己不小心泄露密码还是其他被恶意软件盗取账号密码,都可能会造成个人隐私泄露等问题;

站在公司角度来看,最大的问题是账号数据库被入侵以及高价值账号(如会员账号)被用户主动分享,可能会对公司利益造成损失等问题。

抛去技术层面的措施略过不谈,要解决账号安全问题,从产品角度该怎么来处理?很显然,需要抓住这个问题的本质:账号是无法脱离设备而单独存在的。

基于此,我们可以从账号与设备关系入手,从产品层面上解决账号安全这个问题,以最大限度的保障用户和公司的利益。

账号和设备之间的关系为:一个账号可以对应多个设备;一台设备也可以登录多个账号;显而易见,应该以“一个账号对应多个设备”这条线展开,这些设备中肯定有一台是合法的设备(合法设备指用户本人使用的设备),此时我们就可以转化思路,将“如何(从产品层面上)保障用户账号安全”的问题转变为“如何识别出用户的合法设备”的问题了,很显然,识别用户的合法设备只需要用户进行校验即可,可以通过手机号验证、邮箱验证等方法来实现,进而,我们可以继续将“如何(从产品层面上)保障用户账号安全”的问题转变为“在什么场景下采取什么样的方式怎么样去禁止非法设备使用该账号”的问题了(Where,How,What);

可以针对各家公司具体遇到的问题和实际场景来给出相应的解决方案,具体到乐视视频APP是这样处理的:

(1)建立“账号-设备”对应关系;

(2)以预防的方式,在登录层面上降低账号被盗用的可能性;

(3)账号用户可以主动查看、管理使用自己账号的设备,并可对不同的设备设置不同的权限级别:信任设备、普通设备、禁用设备;不同权限级别的引入可以保证账号主人对非法设备进行管理,例如信任设备的设置能够保证账号主人的使用权限不会受到其他设备的任何影响,并且能够对其它设备进行设置和操作,如下线其他设备,禁止其他设备使用该账号等;设备权限关系如下图所示:

权限层级关系图.png

(4)尽量不打扰合法用户正常使用该账号,在保障账号安全的前提下兼顾用户体验;

(5)该功能既可由用户主动触发,也可在系统监测到账号被盗用等情况时被动触发,且根据触发场景给出相关出口;

至此,我们的产品方案主框架已经搭建好,剩下的就是细化和对主框架的填充了。

由上可知,某台设备被设置为信任设备后,它将拥有该账号的最高权限,因此,在设置信任设备时一定要确保是账号用户本人在进行操作,我们通过常规的手机号和短信验证码的方式来实现这一点(因注册用户主要为手机号注册;对于采取第三方登录的用户,在设置信任设备之前也必须经过绑定手机号这一流程);对于普通未经校验过的使用该账号的设备,我们统一设置其权限为普通设备,必须经过手机号验证码校验后才可进入设备管理功能内部,查看哪些设备曾经使用过该账号以及哪些设备正在使用该账号,并可对非法设备进行下线或禁用操作;也可查看所有使用该账号的设备所在的城市及ip信息等;如下图所示:

WechatIMG306.png

WechatIMG307.png

WechatIMG308.png

WechatIMG303.png

WechatIMG304.png

WechatIMG305.png

由上图可知,在设备管理功能内部,我们可以对使用该账号的设备执行下线和禁用操作,相应的,如果对某台设备执行了下线或禁用操作后,会在其设备上弹出弹窗提示其已被下线或被禁用;引导他使用自己的账号进行登陆;如果是账号主人在登录时因为同时在线设备已满(比如账号被别人盗取并正在使用且占满了系统设定的可同时在线设备的最大数量),则会弹窗提示用户当前在线设备数已满,如果是账号本人,则请将其设备设置信任设备,如果用户在此被动入口设置了信任设备后,将会随机将一台正在在线的非信任设备踢下线。相关截图后续再补充。

至此,从产品层面上保障用户账号安全的方案大体如上;个人认为,纯粹目的的账号安全保障方案应是技术手段为主,产品手段为辅。


第一次在PMCAFF上答题,以上均由已公开的大众可见的资料进行简要说明,难免粗糙,还望海涵。

匿名

没做过程序就别瞎想安全性了 一点都不专业好不

2016年11月24日
| 评论 1
匿名
草青见 网易 打酱油

大厂的账号安全都一样会被爆,小厂的就是看对别人的吸引力够不够了。真的要做登录阶段的控制,里面包含了设备指纹的识别,IP识别,操作频率,人机识别,短信验证,邮箱验证,IP地理位置识别,行为关联,然后把这些串起来。

2016年11月24日
| 评论 4
匿名
ponypan 去哪儿 产品实习生

后台技术哥哥们的事情我就不参和了,信息安全永远是硬伤,京东爸爸的13年的漏洞问题暴露了,这能怪谁。。。。

2016年12月12日
| 评论 0
匿名
阿赛# 匿名 产品经理

十分认同高票答案给出的账户安全风控策略。

在账户体系设计方面,考虑到面向C端用户的产品体验和安全性;个人认为 “手机号 + 短信验证码”的登录方式安全性和性价比更高。

匿名

很多时候,大家的多个平台账号和密码,都是一样的,好记嘛,所以一个平台泄露,其他平台也泄露了。安全方面,采用https吧,至少说支付页面。至于刷活动这些,判断用户行为,但这些不懂技术就根本没法给程序员说。总之,上面说的都是废话,产品经理去找技术资深的大牛解决,这不是你的领域。

匿名

CIA够安全吧,白宫够安全吧,不照样被黑!这个就是矛盾的问题。。。。主要看风控机制吧,能在第一时间对账号异常做鉴别和处理

2016年11月28日
| 评论 2
匿名
nathin 没工作的 产品经理

中小型公司防止帐号被盗建议可以走第三方,性价比最高,之前做过理财产品,为了防止羊毛党以及帐号安全等就接入了同盾等第三方,效果非常好。

匿名

当今的环境没有绝对的安全,只能尽可能的去完善安全性的问题!

如何考虑安全性的问题,鹅厂这种大的公司做的还是比小企业好很多的。

对于安全性问题:

个人觉得通过用户的行为分析,对常用IP和设备进行隐藏式绑定,如果存在异常登陆对用户发送通知验证信息。其次对用户登陆连续登录失败进行账号冻结,需要验证用户信息进行解封。在业务允许的情况下,最好是不要多点登录的功能!

匿名

发表评论,请先 登录 · 注册