2010-09-03 5 views
2

J'écris ceci dans le désespoir espoir que quelqu'un a déjà fait quelque chose de similaire. J'aurais posté sur drupal.org - mais ce site est à peu près aussi convivial qu'un coup de pied dans les tomates. Je ne sais pas pour vous, mais quand je développe je laisse tous mes chemins Drupal avec un accès ouvert, et puis penser à les verrouiller avec des autorisations d'accès à la fin. Ce qui serait vraiment utile, c'est un module qui analyse tous les chemins disponibles (en déconstruisant fondamentalement le contenu de la table menu_router), puis en les essayant (curl?) À tour de rôle, en tant qu'utilisateur donné avec un ensemble donné de rôles.Drupal - Sécurité vérifier tous les chemins du site par rôle

La sortie serait une simple page HTML indiquant quels chemins sont accessibles et lesquels ne le sont pas. Je suis presque résigné à le faire moi-même, mais si quelqu'un connaît quelque chose de vaguement similaire, je serais plus que reconnaissant d'en entendre parler.

Vive

MISE À JOUR
Après une bonne idée de Yorirou, j'entrechoquer un simple module pour fournir la sortie que je cherchais.

Vous pouvez obtenir le code ici: http://github.com/hymanroth/Path-Lockdown

+0

mettre le module à Drupal.org aussi :) – tamasd

+0

J'ai essayé mais ils ont refusé de me donner un compte CVS. –

Répondre

1

Ma première tentative serait une fonction comme ceci:

function check_paths($uid) { 
    global $user; 
    $origuser = $user; 
    $user = user_load($uid); 

    $paths = array(); 
    foreach(array_keys(module_invoke_all('menu')) as $path) { 
    $result = menu_execute_active_handler($path); 
    if($result != MENU_ACCESS_DENIED && $result != MENU_NOT_FOUND) { 
     $paths[$path] = TRUE; 
    } 
    else { 
     $paths[$path] = FALSE; 
    } 
    } 

    $user = $origuser; 

    return $paths; 
} 

Ce qui est bon pour une première fois, mais il ne peut pas gérer les chemins génériques (% dans le chemin de menu). Le chargement de toutes les valeurs possibles peut être une option, mais cela ne fonctionne pas dans tous les cas. Par exemple, si vous avez% node par exemple, vous pouvez utiliser node_load, mais si vous n'avez que%, alors vous n'avez aucune idée de ce qu'il faut charger. En outre, il est courant d'omettre le dernier argument, qui est une variable, afin de gérer correctement si aucun argument n'est donné (par exemple afficher tous les éléments).

De plus, il peut être judicieux d'intégrer cette solution dans le système de test de Drupal.

+0

Bonne idée Yorrou! J'ai utilisé votre code pour la base d'un module. Voir ma réponse mise à jour pour plus de détails. De même, '%' n'est pas un problème, car nous testons uniquement l'accès au chemin, pas si le chemin lui-même est valide. –

1

Je l'ai fait un peu de recherche et n'a pas été en mesure de trouver quoi que ce soit. Bien que je suis enclin à penser qu'il existe un moyen de vérifier l'accès au chemin à travers l'API Drupal par opposition à CURL - mais s'il vous plaît tenez-moi au courant de vos progrès/laissez-moi savoir si vous souhaitez aider au développement. Ce serait un excellent ajout aux modules Drupal.

+0

Oui, CURL était inutile. J'ai écrit un module pour générer la sortie que je cherchais, voir ma réponse mise à jour pour plus de détails. –

Questions connexes