• 认证与会话管理


    目录

    认证与授权

    我的谁(Who am I)?

    单点登录(SSO)

    我能干啥(What Can I Do)?

    垂直权限管理

    水平权限管理


    认证与授权

    认证与授权是应用中最重要的两个功能点。

    认证(Authentication)的目的是为了认出用户是谁,而授权(Authorization)的目的是为了决定用户能够做什么。

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

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

    我的谁(Who am I)?

    我是谁就是认证的过程。密码是最常见的一个认证手段,输入了正确的密码,理论上就可以证明你的身份。但是,如果你的密码太简单被别人爆破出来了,或者你的密码泄露了,那么别人就可以利用你的密码来以你的身份进行认证。所以,密码的设置和保存是非常重要的。网站在存储用户密码的过程时,也应该在后台将用户密码加密进行存储。最常见的就是以MD5加密,并且加入salt盐值的方式进行存储。

    既然单因素认证存在安全风险,那么很多安全性要求很高的应用自然就采取了多因素认证。比如支付宝,如果采用密码进行认证外,还有手机动态口令、数字证书、宝令、支付盾和第三方证书等认证方式。

    密码等认证方式一般仅仅用于登录的认证过程中,当登录完成后,用户访问每个链接时不可能都输入密码。所以,Cookie和Session出现了。传送门:Cookie、Session和Token的区别

    在Web中,最常见的是基于Session的认证:Session认证机制,也有少部分基于Token的认证:Token认证机制,还有一小部分最新的是基于JWT认证:JWT(Json Web Token)认证

    单点登录(SSO)

    单点登录(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事先会在系统中定义不同的角色,不同的角色拥有不同的权限,一个角色实际上就是一个权限的集合。而系统的所有用户都会被分配到不同的角色中,一个用户可能拥有多个角色,角色之间有高低之分。在系统验证权限时,只需要验证用户所属的角色,然后就可以根据该角色所拥有的权限进行授权了。

    在配置权限时,应当使用最小权限原则,并使用默认拒绝的策略。只对有需要的主体单独配置允许的策略。

    垂直权限中容易发生的漏洞是垂直越权,即低权限用户通过修改参数获得高权限用户的权限。

    水平权限管理

    水平权限管理又可以称之为基于数据的访问控制。

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

    参考文章:白帽子讲Web安全

    相关文章:逻辑漏洞之越权访问漏洞

                     Cookie、Session和Token认证

                     JWT(Json Web Token)认证

                      Oauth2.0认证

  • 相关阅读:
    堆排序
    上线打包不常见错误整理
    ios开发者相关的几个apple邮箱
    App被拒选择回复还是重新提审,如何选择最高效的应对方式?
    iOS证书(.p12)和描述文件(.mobileprovision)申请
    OC与Swift混编
    tableViewCell重用
    tabBar选择不同item设置标题不同颜色
    iOS 关于TouchID指纹解锁的实现
    cocoaPods报错You need at least git version 1.8.5 to use CocoaPods
  • 原文地址:https://www.cnblogs.com/csnd/p/11807612.html
Copyright © 2020-2023  润新知