Le contrôle d'accès est une mesure de sécurité importante pour garantir que seuls les utilisateurs autorisés peuvent accéder aux ressources système. Dans PHP, il existe plusieurs façons d'implémenter le contrôle d'accès. Cet article se concentrera sur deux politiques de contrôle d'accès commun: le contrôle d'accès basé sur les rôles (RBAC) et le contrôle d'accès basé sur les attributs (ABAC), et sera expliqué dans les cas réels.
RBAC (Contrôle d'accès basé sur les rôles) attribue des autorisations à travers des rôles. Les rôles peuvent être définis en fonction des responsabilités, des départements ou d'autres critères, avec les autorisations de l'utilisateur sur la base des rôles qui leur sont attribués. Pour implémenter RBAC, vous devez d'abord définir les utilisateurs, les rôles et les autorisations:
use RoleBasedControl as RBC;
$user = new User();
$user->setUsername('admin');
$role = new Role();
$role->setName('manager');
$permission = new Permission();
$permission->setPermission('manage_users');
$rbac = new RBC();
$rbac->assignUserToRole($user, $role);
$rbac->assignPermissionToRole($permission, $role);
if ($rbac->hasAccess($user, $permission)) {
// Permettre l'accès
} else {
// Accès refusé
ABAC (Contrôle d'accès basé sur les attributs) attribue des autorisations via des attributs utilisateur. Ces attributs peuvent être l'âge, l'emplacement, l'adhésion à l'organisation, etc. Pour mettre en œuvre ABAC, vous devez d'abord définir les propriétés des utilisateurs et des ressources et définir la politique d'accès:
use AttributeBasedControl as ABC;
$user = new User();
$user->setAttribute('age', 25);
$user->setAttribute('location', 'USA');
$resource = new Resource();
$resource->setAttribute('sensitivity', 'high');
$policy = new Policy();
$policy->setAttribute('age', '>= 21');
$policy->setAttribute('location', 'USA');
$policy->setPermission('read');
$abc = new ABC();
$abc->addPolicy($policy);
if ($abc->hasAccess($user, $resource)) {
// Permettre l'accès
} else {
// Accès refusé
Supposons que nous développons un site Web de commerce électronique où seuls les utilisateurs de l'administrateur peuvent accéder au tableau de bord d'administration. Nous pouvons utiliser RBAC pour implémenter cette fonction:
$user = $_SESSION['user'];
if ($user->hasRole('admin')) {
// Tableau de tableau de bord d'affichage
} else {
// Rediriger vers la page d'accueil
En mettant en œuvre avec précision les politiques de contrôle d'accès, vous pouvez améliorer considérablement la sécurité de vos applications Web et empêcher un accès non autorisé. Qu'il s'agisse de RBAC ou ABAC, il peut fournir des solutions efficaces pour différents besoins de sécurité.