• 白帽子讲web安全——访问控制


    上一章说的认证与会话管理,这章是访问控制,刚看访问控制这章的时候,感觉跟上章的“授权”没什么区别,第一感受就是“授权”。

      之后看了才进一步了解,“授权”是好比屋子的主人进来了,那么他可以坐在客厅,也可以进到卧室睡觉,这种情况下就可以说他具有屋子的“最高权限”。如果进来的是客人,那么他可能就仅仅被允许在客厅的了。“授权”在这层上面可以理解的就是被允许做的事情,但是在一个系统中,怎么去限制一个客人只能够待在客厅里面的。这就是“访问控制”来做的事情了,“访问控制”也即是“权限控制”。抽象地说,都是某个主体对某个客体需要实施某种操作,而系统对这种操作的限制就是权限控制

      举个例子:在Linux操作系统中,对文件的访问控制。此时“主体”是系统的用户,“客体”是被访问的文件,能否访问成功,将由操作系统给文件设置的ACL(访问控制列表)决定。一个文件可以执行的操作分为“读”、“写”、“执行”三种,分别由 r、w、x表示。这三种操作同时对应着三种主体:文件拥有者、文件拥有者所在的用户组、其他用户。

      在一个安全系统中,确定主体的身份是“认证”解决的问题;而客体是一种资源,是主体发起的请求的对象。在主体对客体进行操作的过程中,系统主体不能“无限制”地对客体进行操作,这个过程就是“访问控制”。

      在web应用中,根据访问客体的不同,常见的访问控制可以分为“基于URL的访问控制”、“基于方法的访问控制”和“基于数据的访问控制”。

    只是自己平时遇到的在访问控制环节可能的漏洞:

    • 未授权访问,这个是指web网页的未授权访问
    • 垂直越权
    1. 登录界面会遇到的多,修改用户名
    2. 登录时,修改可能POST的角色ID
    3. 访问其它权限网页时,修改URL中某个参数
    • 水平越权
    1. 同一级的角色,可以获取别人的信息,修改URL中参数ID

    以上是暂时想到的,之后再扩展补充。

      对于垂直越权,提出的“基于角色的访问控制”来限制,spring security 中的两种权限管理方式,“基于URL的访问控制”、“基于方法的访问控制”。都是以RBAC模型来实现的,在spring security中都是验证该用户所属的角色,以决定是否授权。

      对于“基于URL的访问控制”,spring security使用配置文件对访问URL的用户权限进行设定,如下:

    <sec:http>
        <sec:intercept-url pattern="/president_portal.do**" access="ROLE_PRESIDENT" />
        <sec:intercept-url pattern="/manager_portal.do**" access="ROLE_MANAGER" />
        <sec:intercept-url pattern="/**" access="ROLE_USER" />
        <sec:form-login />
        <sec:logout />
    </sec:http>

      不同的URL对于能访问其的角色有着不同的要求。

  • 相关阅读:
    路由器漏洞调试的一些技巧
    路由器漏洞挖掘利用的一些基础知识
    windows 利用环境变量%PATH%中目录可写提权

    python super原理,不是指父类
    regexp盲注的一些改进
    阿里规范
    阿里规范
    工具类
    Timer 使用 (一)
  • 原文地址:https://www.cnblogs.com/suyi223/p/9964580.html
Copyright © 2020-2023  润新知