缺少功能级的访问控制

概念原理

大多数Web应用程序的功能在UI页面显示之前,会验证功能级别的访问权限。但是,应用程序需要在每个功能被访问时在服务器端执行相同的访问控制检查。如果请求没有被验证,攻击者能够伪造请求从而在未经适当授权时访问功能。
比如:对于测试登录页面功能级访问控制是否缺失,需要测试
a:合法用户是否能够正常登录,并且访问到登录之后的页面
b:匿名或者攻击者等没有权限的用户是否会被拒绝登录,并且不能访问到需要登录之后才能访问到的页面。

测试方法

1、 保证合法授权用户可以访问成功
2、 限制非法未授权用户的访问

后果危害

很多系统的权限控制是通过页面灰化或隐藏URL实现的,没有在服务器端进行身份确认和权限验证,导致攻击者通过修改页面样式或获取隐藏URL,进而获取特权页面来对系统进行攻击,或者在匿名状态下对他人的页面进行攻击,从而获取用户数据或提升权限。
如果是发生在后台,攻击者能够访问到正常用户才能访问到的页面,将对所有用户的安全问题造成威胁。

防御措施

1、 设计严格的权限控制系统,对于每个请求和URL都要进行校验和权限确认,防止非法请求被执行
2、 对于每个功能的访问,都要有明确的角色授权,采用过滤器的方式校验每个请求的合法性
3、 实现Web访问的IP白名单列表,禁止不可信的IP访问Web系统

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
属性基础访问控制(Attribute-Based Access Control,ABAC)是一种灵活的访问控制模型,它使用属性来控制对资源的访问。在Python中,可以使用各种库和框架来实现ABAC模型。 一种常见的实现方式是使用Python的装饰器(Decorator)来实现ABAC模型。装饰器是Python的一个高特性,它可以在不修改被装饰函数的情况下,动态地为函数增加额外的功能。 下面是一个使用装饰器实现ABAC模型的示例: ```python def access_control(required_attributes): def decorator(func): def wrapper(*args, **kwargs): # 检查用户是否拥有所需属性 user_attributes = get_user_attributes() # 获取用户属性 if all(attr in user_attributes for attr in required_attributes): # 用户拥有所需属性,允许访问 return func(*args, **kwargs) else: # 用户缺少所需属性,禁止访问 raise Exception("Access denied") return wrapper return decorator ``` 这个装饰器可以接受一个属性列表作为参数,并在被装饰的函数执行前检查用户是否拥有这些属性。如果用户拥有所有所需属性,则允许访问;否则,抛出异常禁止访问。 使用这个装饰器时,只需要在需要进行访问控制的函数上加上`@access_control`装饰器即可: ```python @access_control(["admin", "view"]) def view_admin_dashboard(): # 显示管理员面板 pass ``` 这个示例中,`view_admin_dashboard()`函数需要用户拥有`admin`和`view`属性才能访问。如果用户缺少这些属性,则访问将被禁止。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值