认证与会话管理

地球胖头鱼 2021-02-18
Web安全 发布于 2021-02-18 14:28:20 阅读 51 评论 0

认证与授权

认证与授权是应用中最重要的两个功能点。认证(Authentication)的目的是为了认出用户是谁,而授权(Authorization)的目的是为了决定用户能够做什么。

认证实际上就是一个验证凭证的过程,根据凭证的多少,认证可分为:

  • 单因素认证(只有一个认证凭证)
  • 双因素认证(有两个认证凭证)
  • 多因素认证(大于两个认证凭证)

我是谁(Who am I)

我是谁就是认证的过程。密码是最常见的一个认证手段,输入了正确的密码,理论上就可以证明你的身份。但是,如果你的密码太简单被别人爆破出来了,或者你的密码泄露了,那么别人就可以利用你的密码来以你的身份进行认证。所以,密码的设置和保存是非常重要的。网站在存储用户密码的过程时,也应该在后台将用户密码加密进行存储。最常见的就是以MD5加密,并且加入salt盐值的方式进行存储。既然单因素认证存在安全风险,那么很多安全性要求很高的应用自然就采取了多因素认证。比如支付宝,如果采用密码进行认证外,还有手机动态口令、数字证书、宝令、支付盾和第三方证书等认证方式。密码等认证方式一般仅仅用于登录的认证过程中,当登录完成后,用户访问每个链接时不可能都输入密码。在Web中,最常见的是基于Session的认证,也有少部分基于Token的认证。

单点登录

单点登录(Single Sign On),它只希望用户只需要登录一次,就可以访问所有的系统。SSO的出现无疑让用户的使用体验更加的便捷,但是从安全角度来看,SSO把风险都集中在一个点上。所以说,SSO的出现有利也有弊。目前,最流行的单点登录系统是 OpenID。

我能干啥(What Can I Do)

我能干啥也就是指权限的大小。

认证解决了 Who am I 的问题,而授权则解决了 What Can I Do 的问题。

权限控制,或者说访问控制,抽象得说,都是某个主体对某个客体需要实施某种操作,而系统对这种操作的限制就是权限控制。

在Web应用中,根据访问客体的不同,常见的访问控制可以分为:

  • 基于URL的访问控制
  • 基于方法的访问控制
  • 基于数据的访问控制

垂直权限管理

访问控制实际上是建立用户与权限之间的对应关系,现在应用广泛的一种方法,就是基于角色的访问控制,简称 RBAC(Role-Based Access Control)RBAC事先会在系统中定义不同的角色,不同的角色拥有不同的权限,一个角色实际上就是一个权限的集合。而系统的所有用户都会被分配到不同的角色中,一个用户可能拥有多个角色,角色之间有高低之分。在系统验证权限时,只需要验证用户所属的角色,然后就可以根据该角色所拥有的权限进行授权了。在配置权限时,应当使用最小权限原则,并使用默认拒绝的策略。只对有需要的主体单独配置允许的策略。垂直权限中容易发生的漏洞是垂直越权,即低权限用户通过修改参数获得高权限用户的权限。

水平权限管理

水平权限管理又可以称之为基于数据的访问控制。相对于垂直权限管理来说,水平权限管理问题出在同一个角色上。系统只验证了能访问数据的角色,既没有对角色内的用户做细分,也没有对数据的子集做细分。因此缺乏一个用户到数据之间的对应关系。

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!
请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
地球胖头鱼
未填写
  • 作者发布文章207
  • 作者收获粉丝7
  • 作者收到点赞0
  • 所有文章被收藏了1
  • 博客总访问量排行第2
  • 博客总访问量4.5 万(每日更新)
查看所有博文