访问控制的方案很很多种,有基于角色的也有基于路径的。他们的基本原则都是根据用户的不同身份为用户划分等级,同样对可用资源也划分等级,进而根据用户的等级限制用户的对资源的访问。而现实网络中的访问控制却往往存在各种各样的控制缺陷。例如,我们将在下面提到的绕开基于角色的访问控制,进而获取我们想要查看的信息;绕开基于路径的访问控制,进而访问我们不能访问的资源。
为什么会存在这样的问题,又怎样防御这样的缺陷。我想这才是我们学习的目的。首先让我们分析一下问题存在的原因:
(1)服务器端过分相信不可信的客户端;
(2)服务端端没有对主客体之间是否存在访问权限做合理的检查;
(3)将客户的信息暴漏在客户端;
(4)依靠不可靠的标示进行检查和查询;
所以我们时刻要记着:(1)客户端是不可信的,从客户端传输过来的任何信息都有可能是假的,都有可能危害我们的服务器,我们必须对所传输的数据进行合理的检查;(2)对于像用户表示这样的用于服务器端进行比对查询的信息不要保存在客户端;(3)要对用户的身份和所提交的请求或者说权利进行严格检查;例如我们可以在用户登录的时候用session等机制标示用户的身份,然后每一次操作的时候我们用session值与用户所提交的操作进行合理的匹配,以保证当前用户只能行驶当前用户的权利,当然这样的话就要求session是不可预测的,否则还是不能保证访问的安全性。这就涉及到session的机制,稍后我们会提到。不在这里多说了,接下来让我们一起进入实验吧。
1.1 Using An Access Control Metrix(使用访问控制模型)
这个实验其实没有什么意思,设计这个实验的目的我想就是想让我们了解访问控制的概念。在这里每一个用户都代表着不同的身份,对系统所持有的资源也都有不同的访问权限,我们可以任意选择一个用户和资源,进而查看这个用户是否有对这个资源的访问权限。在这里我们需要找出的是对”'Account Manager'“拥有响应权限的人员,则我们只需逐个测试便可得出所找的