安全编程-权限控制

目前几乎在任何系统中都会有权限管理。权限管理一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源。

一般在权限控制中包含3个方面:

  • 主体,是一个主动地实体,它可以提出对一些资源或者数据的访问请求,主体可以是能够访问信息的用户或进程。
  • 客体,是含有被访问信息的被动实体,客体可以是计算机、数据库、文件、目录等。
  • 安全规则,是一套规定主体是否可以访问客体的规则。访问规则规定了哪些主体可以访问哪些客体。

在对主体进行授权时应遵循最小权限原理,最小权限原理的含义是系统的每一个程序与每一个用户应该在必需的最小权限组下来运行以完成工作。一个程序或用户拥有的权限越多,它可能导致的潜在破坏就越大。减少可能的操作会降低程序可能导致的风险。

授权就是指对特定资源的存取访问权,它主要是根据事先定义好的安全策略或者访问控制规则,决定访问实体是否被允许访问具体的资源。现在大部分的Web服务都是使用角色进行权限控制。授权问题一般是指访问了没有授权的资源或者信息,根据产生的原因分为两类:

  • 水平越权,是指同一个级别的用户利用程序的漏洞,越权访问、修改甚至删除另外一个用户的私有信息和资源。
  • 垂直越权,一个角色或者级别的用户可以访问另外一个角色或者级别的用户信息,或者是以另外一个角色或者级别的名义做一些操作。

如果用户的权限控制不当,可能导致网站的用户信息被泄露、数据被篡改,甚至网站的控制也可能被接管。下面列出几点注意事项和预防措施。

1) 验证一切来自客户端的参数,特别是和权限相关的参数,如用户ID或者角色ID等。

2) 用户认证状态不要发送到客户端,不要相信来自任何客户端发来的认证和授权信息。

3) 对于每一个页面的任何一个访问内部资源的请求,都要验证是否有权限,包括是否对指定的资源有权限,而且还要检查所有权。

4) 把应用程序分成匿名、正常、授权的和管理的区域,通过仔细地将角色和数据以及功能匹配,减少攻击面。

5) 不要分散授权,要集中授权。

6) Web应用程序最好有一个统一的授权和认证机制,也可以使用第三方的框架结构。

7) 在添加用户时,应该默认将用户的权限设置为最低权限,然后再根据实际所需添加相应的权限。

8) 一些关键的路径(例如:管理员的管理页面)不应该很容易被猜测到。

9) 最小权限原则,也就是使用符合需求的最小权限的用户运行Web应用程序,使用符合需求的最小权限访问数据库。

 

你可能感兴趣的:(权限,安全)