Web验证

web验证

++摘自《奇舞周刊》-《奇舞团资深前端教你,什么是Web验证》作者:韩永刚++

方案一:传统身份验证

注册

  • 账号密码加密入库

登录

  • 账号密码加密后与库中账号密码比对
  • 一致则登录成功,不一致则失败

存在问题

  • 登录环境不安全,账号输入时可能被监控
  • 发送过程中可能被劫持
  • 入库后可能被黑客攻击而泄露密码
本质问题:账号密码需要手动输入,且同一个账号密码可能注册多个站点,容易造成泄露

方案二:第三方登录

OpenID:开放认证协议——帮网站确认一个用户的身份

特点:
  • 去中心化:任何网站既可以是身份提供者,又可以是身份使用者
  • 在一个作为OpenID提供者的站点注册,eg:google
  • 接入简单:将用户导向OpenID Provider的Entry并带上callback,只要用户同意认证,即可实现登录
  • example.com ---向Google认证页面请求认证--> 同意认证,返回唯一标识
优点:
  • 免去注册流程
  • 客户端不再需要输入账号密码,降低安全风险
缺点:
  • 依赖第三方平台,因此第三方平台的安全性很重要,牵一发而动全身
  • 开放平台的稳定性不达标,可能影响使用
  • 用户流失的风险

oAuth:开发授权协议——授权第三方在可控范围内访问用户资源

  • 1.example.com ---请求授权-------> Google授权页面
  • 2.example.com <--同意并返回code-- Google授权页面
  • 3.example.com ---code换token----> Google服务
  • 4.example.com <----返回token----- Google服务
  • 5.example.com -携带token访问资源-> Google服务
  • 6.example.com <---返回资源------- Google服务

方案三:双因素认证

使用两种及以上能够证明自己身份的方式进行验证
  • 短信验证码、邮件验证码
  • 动态令牌
  • 认证APP,基于TOTP加密算法,利用应用与认证APP共同持有的种子秘钥,每隔30s生成一个新的6位验证码,应用与APP之间的验证码一致则完成验证。
  • 登录确认的方式:不需要输入验证码,而是通过登录确认点击的方式来完成双因素认证的过程。通过公钥加密算法来确认你的身份,应用会生成一个秘钥对,私钥存储在本地,公钥发送给服务器作用用户信息存储,当用户进行登录操作时,服务器会用公钥加密一段信息发送到你的设备上,只有拥有正确私钥的设备才能解密并完成二次认证。

方案四:WebAuthn(web验证的未来)

  • 由W3C万维网联盟发布的Web标准
  • 提供一系列标准化的协议,让用户告别过去繁琐且不安全的账号密码登录方式,以实现安全的无密登录体验为目的。
  • 允许用户直接使用设备的指纹识别、面部识别、虹膜识别、声音识别、实体秘钥(usb连接、蓝牙连接、NFC连接)等方式来进行登录验证。
原文地址:https://www.cnblogs.com/nanhuaqiushui/p/11782720.html