权限控制与角色访问测试是系统安全测试的重要部分-,验证第三方网站系统是否严格按照基于角色的访问控制(RBAC)模型来管理和执行其权限策略-。本测试的目标-是:确保每个用户只能访问且只能操作其被明确授权的资-源,防止&出现越权访问(包括垂直越权和水平越权),从-而保障第三方网站系统安全-。
测试对象: 第三方网站系统的所有受权限控制的功能模块-数据条目及操作接口-(UI层面和API层面)。
在开始测试前,必须进行充分的准备和信息收集-:
1.获取RBAC设计文档: 向第三方供应商索要或理解其设计的角色权限矩阵。
2.创建测试账户: 为每一个需要测试的角色创建至少一个独立的测试账户。确保账户处于有效的状态。
3.枚举测试资源(URLs & APIs): 通过爬虫、开发者工具(浏览器Network面板)或API文档,列出所有关键功能的URL地址和API接口端点(Endpoint),特别是那些进行增、删、改、查操作的接口。
测试应从垂直-越权和水平越权展开-。
垂直越权: 低权限角色尝试访问高权限角色的功能或数据(例如,一个普通用户-尝-试访问管理员后台)-。
水平越权: 相同权限级别的用户尝试访问其他用户的私有数据或操作其他用户的资源(如,用户A尝试修改-查看或删除用户B的订单或个人信息)-。
UI界面可见性与可访问性测试
测试方法: 使用不同角色的测试账户登录系统,人工遍历所有页面-。
API接口层权限校验测试(关键-测试)
UI隐藏并不代表安全,真正的权限校验必须在服务端进行。此阶段是测试的重中之重。
测试方法: 使用专业工具(如 Postman, Burp Suite)模拟HTTP请求。使用低权限角色(如普通用户)的认证信息(如Token、Cookie),去尝试请求高权限角色或其他用户的API接口-。
测试场景:
越权数据访问: 普通用户A获取自己的订单列表的API为 GET /api/orders?userId=123。尝试将 userId 参数修改为其他用户B的ID(userId=456),查看是否能成功获取用户B的订单数据。
越权数据操作: 普通用户A修改自己信息的API为 PUT /api/users/123。尝试将URL中的用户ID 123 修改为 456,并在请求体中填入修改信息,查看是否能成功修改用户B的信息。
越权功能调用: 使用普通用户的Token,调用一个明确需要管理员权限的API,如 POST /api/admin/delete-user,查看请求是否被服务端拒绝。
预期结果: 所有越权操作必须收到服务端返回的 4xx 状态码(最常见的是 403 Forbidden 或 401 Unauthorized)。返回的Body中不应包含任何敏感错误信息或数据。
数据级权限测试
测试方法: 结合API测试,重点关注任何返回数据列表的接口。
验证点: 系统返回的数据集必须被严格过滤,仅包含当前用户有权查看的数据。例如,一个区域经理在查看销售报表时,不应看到其他区域的销售数据。
负面测试与异常流程测试
测试方法: 尝试修改请求参数、请求头(如篡改RoleID)、Token等进行恶意操作。
验证点:系统是否能有效处理伪造、过期或无效的凭证。系统是否能抵抗参数污染等攻击手法。所有权限校验失败的错误信息应为通用提示,避免泄露系统内部结构信息(如“您无权访问该资源”而非“您不是管理员角色”)。
测试工具
1.浏览器开发者工具 (F12): 用于监控网络请求,获取API端点。
2.Postman: 用于构建、发送和自动化API请求测试,管理不同角色的Token。
3.Burp Suite / OWASP ZAP: 专业渗透测试工具,可自动化进行权限遍历测试,效率极高。其“Repeater”和“Scanner”模块非常适合此类测试。
4.自定义脚本 (Python/Shell): 可用于自动化批量测试大量API端点。