一、认证是什么,和授权的区别?

“认证”是很容易理解的一种安全手段,常见的认证方式就是用户名和密码。那么“认证”和“授权”是一回事吗,答案是否定的。不要把这两个概念搞混了,认证翻译为Authentication, 授权是Authorization,他们的区别:
认证的目的是为了认出用户是谁,而授权的目的是为了决定用户能够做什么。

Web安全之认证机制-LMLPHP

从这个例子看出,“能否进入卧室”这个权限被授予的前提,是需要识别出来进房子的是主人还是客人,即如何授权是取决于认证信息的。那么如何才能准确的判断一个人是谁呢,主人把钥匙丢了或者别人伪造钥匙怎么办?这个问题很复杂,目前只能根据“凭证”来确定一个人的身份,这个凭证可以是钥匙,也可以是其他诸如指纹、人脸、虹膜等生物特征。

认证实际上就是一个验证“凭证”的过程。

如果只有一个凭证被用于认证,则称为“单因素认证”;如果有两个或多个凭证被用于认证,则称为“双因素认证”或“多因素认证”。一般来说多因素认证的强度要高于单因素认证,但是在用户体验上,多因素认证或多或少都会带来一些不方便的地方。

二、密码的那些事儿

Web安全之认证机制-LMLPHP

1.密码设置策略

目前互联网普遍已密码作为最基础的认证手段。密码的优点是使用成本低,认证过程实现起来简单,它的缺点是安全能力比较弱,密码可能被猜解,所以涉及密码认证方案是第一个需要考虑的问题是密码强度。
Web安全之认证机制-LMLPHP
推荐的密码强度(策略)如下:

  1. 密码长度普通应用在6位以上,重要应用密码至少8位以上。
  2. 密码要区分大小写字母
  3. 密码为大写字母、小写字母、数字、特殊符号中的两种以上的组合
  4. 不要有连续的字符,如1234、abcd等
  5. 不要设置为自己的名字,生日等个人信息

目前攻击者常用的攻击手法是选择一些弱口令,比如123456,然后猜解用户名,直到发现一个使用弱口令的账号为止。

2.密码保存策略

密码的保存也需要注意,一般来说密码都需要经过加密后或者至少经过哈希后再存储在数据库中,这样即使是网站的管理人员,也不能够看到用户的密码。在这种情况下,即使数据泄露了,攻击者也无法获取到密码的明文。 登录时验证密码的过程仅仅是验证用户提交的密码的哈希值,与保存在数据库中的哈希值是否一致。

3.浏览器记住密码

Web安全之认证机制-LMLPHP
建议不要让浏览器记住您的密码,请选择“一律不”
这个规则我们可是在多次H VV 行动中吃过亏的,切记,选择–一律不!

三、SSO单点登录安全保障

单点登录 (SingleSignOn,SSO) 指一个用户可以通过单一的 ID 和凭证(密码)访问多个相关但彼此独立的系统,它是一种应用很广泛的认证方案。用户只需要登录一次就可以访问所有的系统,大大提升了用户体验,但是也把风险集中在了单点上。
Web安全之认证机制-LMLPHP
SSO的优点在于风险集中化,就只需要保护好这一个点,缺点也同样很明显,单点一旦被攻破的话,后果会非常严重,将影响到所有使用单点登录的系统。降低这种风险的办法是在一些敏感的系统里,再单独实现一些额外的认证机制,如某些支付平台,在付款前要求用户再输入一遍支付密码。

四、小结

本文介绍了认证相关的安全问题,认证解决了凭证验证的问题,授权是决定认证过的用户都有哪些权限。
认证的方法很多,常见的密码认证需要注意密码强度要设置为高强度,最后介绍了单点登录的概念及安全方面利弊,本文能帮助大家提高安全意识。

07-14 14:31