密码代填是一种帮助用户实现自动登录的方式,它通过自动模拟用户填写账号密码的方式来进行登录,严格来说它不属于单点登录范畴,由于国内不少企业采用这种方式来登录日常应用,所以也成为了一种广泛应用的实现单点登录的形式。有人说密码代填很落后,有人说它有特定的应用的场景,那么“密码代填”到底安全吗?是否值得采用?本文就来深入探讨一下。

一、“密码代填”的几种常见方式

“密码代填”顾名思义就是程序代替用户填写登录信息表单,实现自动登录的过程。主要有以下几种实现方式。

1. 通过应用提供的接口获取账号密码

某些应用提供了特定的登陆接口,让第三方调用并传递用户名密码,然后就能实现登陆。即,在原本的登陆页面之外,额外提供了一个接口传递账号密码实现登陆。这种方式下密码信息会直接通过网络传输,安全性完全无法保证,这种方式非常原始,不提倡。

2. 通过POST接口直接提交表单

第二种方式是当用户点击应用时,身份认证服务提供商(IAM or IDaaS) 执行一段javascript脚本,直接调用应用的登陆接口,并将账号密码信息,通过POST表单提交的方式,直接向应用传递,直接登录应用。在整个的流程里,服务器通过执行一段javascript脚本,直接传输账号密码,是不会打开应用登录页面的。这种方式实现起来最为简单,本质上可以理解为机器绕过了浏览器登陆页面,直接登陆了用户身份。

但随着大众网络安全意识的不断提高,现在越来越多的网站开始通过各种方式屏蔽机器直接登陆。其中最为常见的一种方法就是在登陆页面加载的时候添加随机Token——在登陆表单提交的时候,除了必要的身份信息,还需要携带此随机Token,防止机器直接提交账号密码获取用户身份,如下图所示,像 Github这样的应用就无法使用这种方式登录:

3. 通过浏览器插件提交表单

第三种方式是 IAM 提供浏览器插件,与第二种方式“直接调用 Login 接口”不同,浏览器插件会完全模拟用户手动的登录操作,可以分解为三个步骤:第一步,用户自主打开应用登录页面;第二步,浏览器插件自动工作,自动填写账号密码表单;第三步,浏览器插件自动点击登录按钮。

这种方式的优势在于模拟了整个的用户行为,能够适用于绝大多数的网页端应用,包括上文的 GitHub,插件先打开应用页面时就获取 Access Token等登录参数。它的劣势在于插件开发和维护成本比较大。当应用的登录页 UI 改变时,需要及时更新插件的参数(表单位置、登录按钮位置等),并且需要企业所有用户在 IE、Chrome、Safari 等浏览器中自助安装对应的插件。而在不支持安装浏览器插件的移动端,也无法用这种方式实现密码代填。

二、密码代填是否值得采用?

总的来说,以上三种密码代填方式都需要先将终端用户的账号密码存储在身份认证服务商(IAM)的服务器中,用户登录过程中不可避免地传递账号密码,安全性较差。这也是为什么越来越多的应用开启了二次认证(比如短信验证码、滑块验证等形式)来阻止密码代填操作

然而在实际应用场景中,「密码代填是否值得采用」,这一问题并不能“一刀切”下结论,这完全取决于企业应用场景的限制和安全性要求。一般情况下,我们推荐企业选择标准SSO协议的方式进行单点登录。在可以使用SSO的场景下,SSO是绝对优于账号密码的登录方式的。但并不意味着所有的场景都能够使用SSO。据统计市面上绝大部分的ToC的应用都是不支持SSO,比如大家平时使用的各种博客、贴吧、网盘等网站,由于是面向个人用户的,一般只会支持账号密码登陆,不会支持标准SSO协议;还有很多企业内部自研的内部系统,一般是服务于具体业务,不需要对外网开放,一般不会专门预留工期用于SSO的适配。在这些场景下,密码代填的方式能够帮助客户记住账号密码,实现快速登录。

如果企业由于各种客观条件限制,只能选择使用不够安全的密码代填,那么就需要采用足够安全的密钥管理服务(Key Management Service,简称KMS),来保证生成和管理非对称加密的公私钥的过程,以及加密存储敏感信息的安全性。

玉符基于零信任安全模型对KMS服务进行了精心设计,可以帮助企业更好的保护这些敏感信息,包括但不限于以下措施:

  • 对每个敏感信息独立加密存储,在每个敏感信息创建的时候,KMS会自动分配一个新的256 bits对称加密用密钥,保证即使未来单个信息被攻破也不会影响其他信息。
  • 使用最新的密码学规范(例如RSA-256),并保持更新,支持密钥轮转;
  • 所有私钥永远不会明文暴露在外部服务或持久化存储(例如数据库);即使网络数据被监听拦截、数据库被窃取,黑客也无法获取私钥信息。
  • 有价值的敏感信息也只会在服务运行时缓存在受保护的内存空间内(安全界限范围Security Barrier),不会存在于服务器的硬盘上(全面禁用SWAP虚拟内存)。即使黑客攻破服务器的文件系统(filesystem)也无法获得有用信息。
  • 整个KMS服务的启用基于Shamir’s Secret Sharing算法,受5个主令牌(Master Tokens)保护,每次必须有3个或以上的令牌同时输入才能激活(unseal)服务。即使整个服务器的内容被偷窃,偷窃者也无法成功启动KMS服务来获取数据。
  • 加入防篡改机制,服务运行过程中会对所有加密数据的完整性进行检测。一旦有黑客对底层加密数据有任何修改都会导致进程自动封锁。
  • ……

三、安全性更高的单点登录实现方案

再来解释一下 SSO 协议在安全性上的具体优势。标准的SSO协议有很多,像基于XML的SAML协议,在OAuth2.0上的身份验证层OpenID Connect协议等等,它们都是通过受信服务器和应用服务器之间的Token交互实现的,其中运用了密码学的算法知识,从而保证整个登录行为的安全性(关于单点登录中的Token认证可以参考这篇文章《IDaaS技术解析 | 单点登录 Token 认证》)。

与密码代填相比,通过标准SSO协议实现单点登录,不需要知道用户的实际密码,只需要知道需要登录的账号名即可,从根本上避免了密码泄露的风险。而用户也无需再通过复杂的密码策略来保证账号的安全,甚至用户本身都不需要知道应用系统的密码,再也没有了忘记密码的烦恼。

引入标准的SSO协议的另一大好处在于,员工的登陆行为可管控。企业IT管理员可以查看到用户在什么时间什么地点登陆了什么应用,结合风控报警体系后,可以有效杜绝不正常的登陆行为,保护企业账户安全。

四、小结

综上,密码代填虽然在安全性上不够稳妥,但是在特定的应用场景下依然是最便捷的单点登录的实现方式,也建议企业使用更加可靠的 KMS 服务减少敏感信息泄露的风险。当然,为了长远的系统安全考虑,只要条件允许,我们建议企业使用安全性更高的标准 SSO 协议对接的方式实现单点登录。

欢迎进入玉符官网查看更多单点登录、身份与访问管理解决方案

相关阅读

一文看懂单点登录协议:CAS、OAuth、OIDC、SAML | IDaaS技术解析​www.yufuid.com

单点登录引领"无密码办公“成为趋势 | 玉符科技​www.yufuid.com

单点登录实现后,各个系统的账号同步怎么做?​mp.weixin.qq.com企业灵活用工,账号管理难?棘手的问题交给 IDaaS 处理​mp.weixin.qq.com

c#简单注册登录利用缓存存储账号密码_“密码代填”实现单点登录,安全吗?...相关推荐

  1. cas 登录之后不跳转_图解JWT如何用于单点登录

    点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 作者:流云诸葛http://cnblogs.com/lyzg/p/6132801.html ...

  2. cas如何实现多系统间的相互认证_统一身份认证和单点登录的区别

    首先大家会遇到这样一个问题,统一身份认证和单点登录的概念是什么? 百度百科对统一身份认证的定义 所谓身份认证,就是判断一个用户是否为合法用户的处理过程.最常用的简单身份认证方式是系统通过核对用户输入的 ...

  3. 【_ 面試 】在单点登录中,如果 cookie 被禁用了怎么办?

    在单点登录中,如果 cookie 被禁用了怎么办? 单点登录的原理是后端生成一个 session ID,然后设置到 cookie,后面的所有请求浏览器都会带上 cookie,然后服务端从 cookie ...

  4. 微信注册验证成功之后不跳转_微信为什么会被限制登录?被限制后我们该怎么办?...

    有许多朋友问过我这样的问题,那就是自己的微信被"限制登入"了,这是什么原因?又要如何处理?其实这个问题我很早之间也为大家分享过,首先我们来看下你的微信为什么会被限制登入. 其实微信 ...

  5. cas跨域单点登录原理_基于CAS的SSO单点登录-实现ajax跨域访问的自动登录

    先补课,以下网址可以把CAS环境搭起来. [问题背景]两个系统的整合就不说了,简单来说就是网页放在NginX上,但是ajax调用tomcat的API获取数据,其中tomcat段用CAS做身份认证.具体 ...

  6. 如何查看mysql数据库名字和密码_如何查看mysql数据库的登录名和密码

    跃然一笑 如何查看mysql数据库的登录名和密码:通过Windows的服务管理器查看.首先安装Maki5.服务端 "开始"-"运行",输入"servi ...

  7. springboot+uniapp实现简单注册登录

    springboot+uniapp实现简单注册登录 前言 后端 新建springboot项目 配置数据库 建表,写对应类 写接口,写对应xml文件 封装返回信息,封装UUID Service层 Con ...

  8. 详解比springSecurity和shiro更简单优雅的轻量级Sa-Token框架,比如登录认证,权限认证,单点登录,OAuth2.0,分布式Session会话,微服务网关鉴权

    文章目录 1. 技术选型 2. Sa-Token概述 2.1 简单介绍 2.2 登录认证 2.3 权限认证 3. 功能一览 4. Sa-Token使用 4.1 引入Sa-Token依赖 4.2 Sa- ...

  9. SSO(单点登录)技术漫谈

    目录 1. 名词解释 2. 简介 3. SSO的优势 4. 产品表现 5. 客户需求 6. SSO技术漫谈 7. 基础组件 8. 反向代理SSO 9. 有端SSO 10. 参考资料 1. 名词解释 S ...

  10. 互联网上的单点登录研究

    随着互联网络应用的普及,越来越多的人开始使用互联网上提供的服务.然而目前提供服务的网站大多采用用户名.口令的方式来识别用户身份,这使得用户需要经常性的输入自己的用户名.口令.显然这种认证方式存在着弊端 ...

最新文章

  1. python字典新的定义方式
  2. JavaScript中forEach、for-in、for-of循环的比较
  3. 网络广告假流量盛行,查处有妙招
  4. 加州理工学院公开课:机器学习与数据挖掘_神经网络
  5. 文件和目录权限/更改所有者和所属组/umask/隐藏权限lsattr/chattr
  6. 计算机动画---计算机动画的光栅方法
  7. Gradle、 Gradle Android Plugin 、 Build Tools之间关系
  8. Linux查看服务器自动关机,Linux系统自动关机的命令详解
  9. excel转换linux时间戳,在Excel中转换时间戳(timeStamp)
  10. 真实遇到的产品经理面试题
  11. 比勤奋更能决定人生的,是复利思维
  12. 2017-11-20 白银解说
  13. uni.getUserProfile报错:fail can only be invoked by user TAP gesture
  14. JVM第十二章-垃圾回收器
  15. oracle新建用户并授权视图
  16. 存储基础知识 - 传统存储 NAS SAN 和 分布式存储对比
  17. WPS JS宏示例——工作表排序
  18. python集合优化实践
  19. 以全能之力造非凡旗舰:荣耀Magic3系列新品发布
  20. ant java /jre,关于java:Ant:找不到类:javac1.8

热门文章

  1. 为什么300的并发能把支持最大连接数4000数据库压死
  2. cannot spawn XXX\bin\TortoiseGitPlink.exe: No such file or directory
  3. Tinker在sdk升级后无法成功打补丁包的问题
  4. vue2.0一起在懵逼的海洋里越陷越深(二)
  5. 补全aaz288 可能有问题的过程 P_COMPL_AAZ288
  6. Aop 是面向切面编程,
  7. udev文件系统的使用和基本工作原理分析
  8. 卢卡奇总体性原则_重识青年卢卡奇的“历史”概念问题
  9. 几篇关于UDEV的文章
  10. 64bit 用户空间内核空间