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

1、 密码加密。

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

2、 动态密码。

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

3、 验证码。

服务器一旦发现登录有异常,如 IP 变化、短时间内登录次数过多等,会向 App 下发一个图片,用户把图片中要求输入的数据和用户名、用户密码一起提交给服务器。
为了降低用户登录过程的复杂性,通常情况下,用户只需要输入用户名和密码,只有服务器发现异常情况才会启用验证码、动态密码等机制。

4、 扫码登录

二、减少用户输入次数的自动登录。

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 使用场景、具体业务类型、用户习惯等各种方式来平衡安全性、用户体验还有商业应用中很重要的成本。

手机 APP 安全登录的几种方式相关推荐

  1. 【小程序登录的两种方式】

    小程序登录的两种方式 账号密码登录 获取小程序授权登录 账号密码登录 app.json页面顺序 先进入首页 有token就是首页 没有token时redirectTo登录页 {"pages& ...

  2. android数据线投屏电视机,手机投屏电视的几种方式点评

    手机与电视的多屏互动使用次数已经超过了会议室中办公设备与显示屏幕的互动次数,不得不吐槽:手机投屏电视已经被你们玩坏了.今天小编就来点评一下手机投屏电视的几种方式. 一.使用自带投屏功能的手机 安卓手机 ...

  3. .net session 有效时间_Python中requests模拟登录的三种方式(携带cookie/session进行请求网站)...

    这篇文章主要介绍了python中requests模拟登录的三种方式(携带cookie/session进行请求网站),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋 ...

  4. python钉钉扫码登录程序_钉钉扫码登录网站(两种方式实现)

    钉钉扫码登录网站(两种方式实现) 效果: 动手敲代码! 第一步,钉钉后台配置 点击进入钉钉开发者平台 的页面,点击左侧菜单的[移动接入应用-登录],然后点击右上角的[创建扫码登录应用授权],创建用于免 ...

  5. SSH登录的两种方式

    SSH登录的两种方式 一 : 密码登录 1.客户端向SSH服务器发出请求,服务器将自己的公钥返回给客户端. 2.客户端用服务器的公钥加密自己的登录密码,再将信息发送给服务器. 3.服务器接收到客户端传 ...

  6. ​企业商城APP开发制作的3种方式各需要多少钱

    企业商城APP的定制开发价格没有一个固定的数字,因为不同的开发方式就会有不同的价格.董技叔喆哥认为企业商城APP开发制作的方式一般也就以下三种,自主开发.团队开发,第三方开发,不同的开发方式需要的开发 ...

  7. 钉钉扫码登录网站(两种方式实现)

    钉钉扫码登录网站(两种方式实现) 效果: 源代码地址:https://github.com/jellydong/DingQrCodeLogin 动手敲代码! 第一步,钉钉后台配置 参考链接:获取app ...

  8. SSH远程免密登录的两种方式

    SSH远程免密登录的两种方式 一.ssh远程登录操作 1.先ping测试下看看网络是否通畅 2.ssh 192.168.150.148 二.ssh免密登录方式一 1.生成公钥.私钥 2.拷贝公钥到目标 ...

  9. vue编写一个登录页面,使用Tab栏实现“账号登录”和“二维码登录”这两种方式的切换

    编写一个登录页面,使用Tab栏实现"账号登录"和"二维码登录"这两种方式的切换,并通过transition组件结合animate.css实现切换时的动画效果 1 ...

最新文章

  1. pytorch 加载模型报错:‘function‘ object has no attribute ‘copy‘
  2. Jquer学习之jQuery(function(){})与(function(){})(jQuery)之间的区别
  3. 【Android 插件化】VirtualApp 源码分析 ( 添加应用源码分析 | LaunchpadAdapter 适配器 | 适配器添加元素 | PackageAppData 元素 )
  4. PMCAFF微课堂 | 《社交红利2.0:即时引爆》徐志斌教你玩转社交
  5. 不同频率数据的处理方法
  6. 15_torch.sigmoid,torch.nn.Sigmoid之间的区别
  7. FL的萌新之路,开始了!
  8. 4个月,9位诺奖得主加盟国内高校
  9. API 层实现语音录制
  10. kops_使用KOPS的Kubernetes群集中SQL Server
  11. Programmer Competency Matrix
  12. 云计算将成电子政务最大亮点
  13. 搜集的思源黑体相关的资料
  14. java开发最难的地方是什么_java难在哪里?
  15. 如何培养一个人:从育儿谈起
  16. 群体稳定度指标PSI
  17. 服务器被挖矿木马攻击该怎么处理
  18. 淘宝、美团、滴滴分别如何搭建大数据平台
  19. 【Errors】Errors during downloading metadata for repository ‘AppStream‘:
  20. OpenCV38:特征匹配

热门文章

  1. 系统繁忙 请稍后再试(ALI64)”
  2. Room 使用及初步分析
  3. 活体检测——Oulu-NPU数据集
  4. easyui datagrid editor 编辑器的简单活用以及自定义校验
  5. 微信兔子,比较下来算是比较好用的工具
  6. R语言使用rcauchy函数生成符合柯西分布的随机数、使用plot函数可视化符合柯西分布的随机数(Cauchy distribution)
  7. 滴滴校招编程题-田径运动会比赛排名
  8. SAS:Proc Freq ,输出结果控制小数位数
  9. linux无法解析域名
  10. Fedora13 添加 网易镜像源