Web安全之认证机制
Posted 举杯同庆
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web安全之认证机制相关的知识,希望对你有一定的参考价值。
索引
一、认证是什么,和授权的区别?
“认证”是很容易理解的一种安全手段,常见的认证方式就是用户名和密码。那么“认证”和“授权”是一回事吗,答案是否定的。不要把这两个概念搞混了,认证翻译为Authentication, 授权是Authorization,他们的区别:
认证的目的是为了认出用户是谁,而授权的目的是为了决定用户能够做什么。
举个例子解释一下,假设应用系统是一座房子,持有钥匙的人可以进去,那么房子是通过锁和钥匙的匹配来进行“认证”的,用钥匙开门的过程就是互联网里对应的登录(Login)操作。可是开门之后什么事情能做,什么事情不能做就是“授权”管理了。如果进来的是房主,他可以在客厅看电视,也可以进卧室睡觉,可以随意做想做的事情,因为他具有物资的最高权限。如果进来的是客人,那么可能他仅仅被允许坐在客厅看电视,不能进入卧室,没有进卧室的权限。
从这个例子看出,“能否进入卧室”这个权限被授予的前提,是需要识别出来进房子的是主人还是客人,即如何授权是取决于认证信息的。那么如何才能准确的判断一个人是谁呢,主人把钥匙丢了或者别人伪造钥匙怎么办?这个问题很复杂,目前只能根据“凭证”来确定一个人的身份,这个凭证可以是钥匙,也可以是其他诸如指纹、人脸、虹膜等生物特征。
认证实际上就是一个验证“凭证”的过程。
如果只有一个凭证被用于认证,则称为“单因素认证”;如果有两个或多个凭证被用于认证,则称为“双因素认证”或“多因素认证”。一般来说多因素认证的强度要高于单因素认证,但是在用户体验上,多因素认证或多或少都会带来一些不方便的地方。
二、密码的那些事儿
1.密码设置策略
目前互联网普遍已密码作为最基础的认证手段。密码的优点是使用成本低,认证过程实现起来简单,它的缺点是安全能力比较弱,密码可能被猜解,所以涉及密码认证方案是第一个需要考虑的问题是密码强度。
推荐的密码强度(策略)如下:
- 密码长度普通应用在6位以上,重要应用密码至少8位以上。
- 密码要区分大小写字母
- 密码为大写字母、小写字母、数字、特殊符号中的两种以上的组合
- 不要有连续的字符,如1234、abcd等
- 不要设置为自己的名字,生日等个人信息
目前攻击者常用的攻击手法是选择一些弱口令,比如123456,然后猜解用户名,直到发现一个使用弱口令的账号为止。
2.密码保存策略
密码的保存也需要注意,一般来说密码都需要经过加密后或者至少经过哈希后再存储在数据库中,这样即使是网站的管理人员,也不能够看到用户的密码。在这种情况下,即使数据泄露了,攻击者也无法获取到密码的明文。 登录时验证密码的过程仅仅是验证用户提交的密码的哈希值,与保存在数据库中的哈希值是否一致。
3.浏览器记住密码
建议不要让浏览器记住您的密码,请选择“一律不”
这个规则我们可是在多次H VV 行动中吃过亏的,切记,选择–一律不!
三、SSO单点登录安全保障
单点登录 (SingleSignOn,SSO) 指一个用户可以通过单一的 ID 和凭证(密码)访问多个相关但彼此独立的系统,它是一种应用很广泛的认证方案。用户只需要登录一次就可以访问所有的系统,大大提升了用户体验,但是也把风险集中在了单点上。
SSO的优点在于风险集中化,就只需要保护好这一个点,缺点也同样很明显,单点一旦被攻破的话,后果会非常严重,将影响到所有使用单点登录的系统。降低这种风险的办法是在一些敏感的系统里,再单独实现一些额外的认证机制,如某些支付平台,在付款前要求用户再输入一遍支付密码。
四、小结
本文介绍了认证相关的安全问题,认证解决了凭证验证的问题,授权是决定认证过的用户都有哪些权限。
认证的方法很多,常见的密码认证需要注意密码强度要设置为高强度,最后介绍了单点登录的概念及安全方面利弊,本文能帮助大家提高安全意识。
以上是关于Web安全之认证机制的主要内容,如果未能解决你的问题,请参考以下文章
Spring Cloud微服务安全实战_3-4_API安全机制之认证