2010-05-26 2 views

Répondre

15

La classe FileSystemWatcher a une demande de lien pour les autorisations sans restriction de CAS. Cela signifie qu'il vérifiera que son appelant direct (c'est-à-dire votre code si vous consommez la classe directement) dispose d'autorisations illimitées. Malheureusement, l'utilisation d'une demande de lien ouvre des failles de sécurité potentielles puisque les autorisations des appelants indirects (c'est-à-dire le code qui appelle votre code) ne sont pas vérifiées par une demande de liaison. Cela signifie qu'un appelant indirect avec des autorisations restreintes peut être en mesure de manipuler votre code hautement fiable pour faire quelque chose de malfaisant en son nom qu'il n'aurait autrement pas eu les permissions d'accomplir. L'une des façons d'empêcher une attaque de ce type est d'appliquer une demande complète pour la même autorisation à tout code qui consomme un type ou un membre avec une demande de liaison. Cela garantira que tous les appelants indirects seront soumis à la même demande d'autorisation, garantissant ainsi qu'ils ne peuvent rien faire via votre code qu'ils n'auraient pas pu faire par eux-mêmes. L'application d'une demande complète de ce type est ce qui est affiché dans l'exemple de code MSDN pour FileSystemWatcher.

+0

Je ne pense pas que je le comprenne déjà assez bien. L'exemple fonctionne correctement sans la ligne 'PermissionSet ...'. Comment cela aide-t-il le code à l'avoir? Que veut dire 'FullTrust'? Privlidges Admin sur la machine ou juste un accès complet au fichier/répertoire en question? – Jeff

+4

L'attribut n'aide pas votre code. Au lieu de cela, il aide à l'empêcher de fonctionner quand il ne devrait pas. «FullTrust» fait référence aux autorisations de sécurité d'accès au code non restreintes. Cela n'a rien à voir avec les permissions accordées au compte de l'utilisateur. Code Access Security est une couche de sécurité supplémentaire fournie par .NET qui permet de contrôler les autorisations accordées au code en cours d'exécution. Pour une introduction, voir http://msdn.microsoft.com/en-us/library/930b76w0(VS.71).aspx. –

Questions connexes