从安全和体验上解析移动App的登录

标签: 安全 体验 解析 | 发表时间:2013-03-03 14:36 | 作者:a345017062
出处:http://blog.csdn.net
App登录需要解决的问题有两个:安全、体验。它们分别对应着登录过程的用户认证,以及用户登录过程操作复杂度两个问题。


一、登录过程的用户认证,常见的手段有密码加密传输、动态密码、验证码等。


1、密码加密。
目前互联网行业的移动APP有不少在使用最简单的做法:根据密码生成一个散列值,把散列值发送给服务器。服务器计算库中用户密码的散列值,然后和客户端传来的散列值比较,一致的话,登录成功。
如果安全性要求更高一些的话,常见的做法就是公钥加密。具体做法是这样,登录前先向服务器请求一个公钥密钥,用公钥密钥加密一串根据密码生成的散列值,然后发送给服务器。服务器使用私钥密钥解密,然后与根据数据库中的用户密码计算出来的散列值进行比较,一致的话,登录成功。当然,还可以做的更优化一些,就是控制公钥密钥的有效期来增强安全性,比如公钥10秒钟失效、只能使用一次等。
关于公钥加密,可以参考这篇文章:http://www.360doc.com/content/11/0406/17/4146412_107621805.shtml


2、动态密码。
关于动态密码,其本质就是选择另外一种可以识别用户身份唯一性的方式来和用户的静态密码一起做用户认证。具体常见的几种实现手段,可以参考这篇文章:http://baike.soso.com/v5973952.htm
目前市面上适合App使用的最常见的方式是利用手机短信进行动态密码认证。即用户常规登录时,如果服务器发现有异常,可以向用户手机发送一条包含动态密码的短信,用户在有效期(常见的是30秒到1分钟)内把用户名、用户密码、动态密码一起发送给服务器进行验证。这个对用户来说,操作门槛比较低,也很方便。


3、验证码。
服务器一旦发现登录有异常,如IP变化、短时间内登录次数过多等,会向App下发一个图片,用户把图片中要求输入的数据和用户名、用户密码一起提交给服务器。


为了降低用户登录过程的复杂性,通常情况下,用户只需要输入用户名和密码,只有服务器发现异常情况才会启用验证码、动态密码等机制。


二、减少用户输入次数的自动登录。
App登录成功后,服务器会告诉App一个session,后续交流都使用session。但通常为了安全起见session都是要设置有效期的,从1星期到20天都见过。那么,为了不让用户在session失效后重新登录,减少用户的手动输入用户名和用户密码的次数,引入了“自动登录”概念。
流程如下:
登录成功后,服务器给App下发sesion的同时,还下发一个认证token,客户端把token做为应用程序的私有数据存储起来。以后,每当session过期后,就把token发送给服务器获取新的session。整个过程都是对用户透明的,对用户来说,输入一次用户名和密码后,就再也没有登录这个事情了。
当然,这种自动登录的前提,是能保证token的安全性远大于session。我们知道,由于手机OS的安全机制,token做为应用程序的私有数据,对其它应用是不可见的,可以保证token的安全性。我们还可以再上一个锁,把token和用户使用App的那个设备做绑定。可供选择的绑定数据有imsi,mac等。这样的话,只要用户手机不丢,就没事。


没有一种安全机制是绝对安全的,我们需要在实际应用过程中综合运用App使用场景、具体业务类型、用户习惯等各种方式来平衡安全性、用户体验还有商业应用中很重要的成本。
作者:a345017062 发表于2013-3-3 14:36:44 原文链接
阅读:0 评论:0 查看评论

相关 [安全 体验 解析] 推荐:

从安全和体验上解析移动App的登录

- - CSDN博客推荐文章
App登录需要解决的问题有两个:安全、体验. 它们分别对应着登录过程的用户认证,以及用户登录过程操作复杂度两个问题. 一、登录过程的用户认证,常见的手段有密码加密传输、动态密码、验证码等. 目前互联网行业的移动APP有不少在使用最简单的做法:根据密码生成一个散列值,把散列值发送给服务器. 服务器计算库中用户密码的散列值,然后和客户端传来的散列值比较,一致的话,登录成功.

[在线体验]谷歌社交产品google+功能全解析

- xbin999 - SocialBeta
据国外媒体报道,google推出新的社交产品Google+,Google+与Facebook在外观界面上有一些相似之处. Google+是在过去的一年中google的最高机密,虽然有很多消息被泄露出来. Google+ 目前正在进行小范围的试用. 下面我们来逐一简单介绍下google+有哪些功能. 我们经常会遇到的一个问题是:有些内容只想分享给特定的人,但是现实中很多社交产品都不能解决这个问题.

提速完善体验 Android 4.1 十大功能升级解析

- - 互联网的那点事
旧金山当地时间2012年6月27日上午,Google I/O 2012开发者大会在Moscone Center会议中心开幕. Android 4.1是本次开发者大会前关注的焦点,最终如之前所传,代号为Jelly Bean的Android 4.1的新系统如期而至,Google在主题演讲一开始便直入主题开始,介绍Jelly Bean的新特性.

解析银联UC移动安全支付

- - 雷锋网
4月24日,中国银联和UC优视联合发布了一个移动安全支付解决方案. 当然,有不少读者会担心这个方案的会存在隐私泄露的风险. 雷锋网特别为各位进行简单的解析,让大家了解更多的关于这个安全支付的一些技术信息. 从业务流程方面看,在这个方案中,当用户使用手机上网浏览需要进行购物时,UC浏览器会帮助用户验证过商家网址的安全性及支付插件的可靠性之后调用中国银联的支付手机支付插件.

Spring单实例、多线程安全、事务解析

- - zzm
 在使用Spring时,很多人可能对Spring中为什么DAO和Service对象采用单实例方式很迷惑,这些读者是这么认为的:.     DAO对象必须包含一个数据库的连接Connection,而这个Connection不是线程安全的,所以每个DAO都要包含一个不同的Connection对象实例,这样一来DAO对象就不能是单实例的了.

解析OpenSSL“心脏流血”:最危险的网站安全漏洞?

- - 创业邦
  美国新闻网站Vox周二撰文,对当天公布的OpenSSL“心脏流血”漏洞进行了全面解读.   SSL是一种流行的加密技术,可以保护用户通过互联网传输的隐私信息. 当用户访问Gmail.com等安全网站时,就会在URL地址旁看到一个“锁”,表明你在该网站上的通讯信息都被加密.   这个“锁”表明,第三方无法读取你与该网站之间的任何通讯信息.

研究报告:移动购物的两大障碍——数据安全和用户体验

- EK - 互联网的那点事
在之前的文章中,我们介绍了移动购物到2016年将达到310亿美金,预示着移动电子商务广阔的前景,今天为大家介绍一个来自Group SJR 和Liz Claiborne Inc 的一份调查报告, 介绍了移动电子商务发展的五个趋势. 此份调查样本为801个18到64岁的移动购物用户,在这个人数中,有660人是智能手机用户,140人为feature手机用户,其中有230人同还是平板电脑的使用者.

为什么支付宝使用用户体验欠佳的安全控件,而国外 Paypal、Google Checkout 都没有这种的设计?

- - BlogJava-首页技术区
这关键是信任体系和风控技术的差别. 其他人说的都是为何「中国特色」下支付宝为何需要安全控件,我来告诉你为什么美国不需要安全控件吧. 一个简单的案例能够解释清楚本质的区别:你在 PayPal 上支付了 $1000 买了一件东西,结果发现是假货,接着发现商家跑了. 跟你在支付宝上买了 ¥1000 假货的处理方式会有什么区别.

MapR初体验

- 呆瓜 - 淘宝数据平台与产品部官方博客 tbdata.org
MapR是MapR Technologies, Inc的一个产品,号称下一代Hadoop,使Hadoop变为一个速度更快、可靠性更高、更易于管理、使用更加方便的分布式计算服务和存储平台,同时性能也不断提高. 它将极大的扩大了Hadoop的使用范围和方式. 它包含了开源社区的许多流行的工具和功能,例如Hbase、Hive.

用户体验

- tal-rasha - 博客园-首页原创精华区
    用户体验是一个很大的话题,先从一个故事说起.     周末参加了两天的PMP培训,听课期间注意到老师的一个细节,在讲选择题的时候,选项A、C读音正常,而“B”老师读为Boy,“D”老师读为Dog.     刚听到的时候大家莞尔一笑,以为这是个善意的玩笑.     很快,我想明白了,B和D的发音类似,容易混淆;Boy和Dog是简单的单词,发音能够明确区分,也没有类似Bog和Doy的读音混淆.