J'utilise .NET 3.5. Dites que j'ai une méthode qui accède à un fichier spécifique, et une clé de registre spécifique. Je souhaite ajouter des définitions de sécurité déclaratives qui limitent la méthode afin qu'elle puisse uniquement accéder au fichier et à la clé de registre spécifiés, et rien d'autre.Sécurité déclarative sur les méthodes dans .NET 3.5 - comment verrouiller les permissions d'une méthode?
Lorsque je tente:
[RegistryPermission(SecurityAction.PermitOnly, Read = "registry key path"]
[FileIOPermission(SecurityAction.PermitOnly, Read = "file path")]
... il me permet de lire le chemin du fichier, mais pas la clé de Registre - je reçois une exception de sécurité.
Si j'utilise:
[RegistryPermission(SecurityAction.Demand, Read = "registry key path"]
[FileIOPermission(SecurityAction.Demand, Read = "file path")]
... il me permet de lire le fichier et la clé de Registre, mais me permet aussi accéder à d'autres fichiers. Ai-je manqué quelque chose sur la façon dont ces méthodes devraient être utilisées pour obtenir cet effet?
Edit:
Le code que je utilise pour accéder à la clé de Registre est:
RegistryKey rk = Registry.LocalMachine;
rk = rk.OpenSubKey("MyKey");
string registryVal = rk.GetValue("Test").ToString();
et donc la déclaration d'autorisation est:
[RegistryPermission(SecurityAction.PermitOnly, Read = @"HKEY_LOCAL_MACHINE\MyKey")]
Merci.
Si votre application/AppDomain fonctionne en toute confiance, ces attributs ne feront rien. Courez-vous en confiance partielle? – Steven
Eh bien, il échoue définitivement si j'essaie d'accéder à un fichier qui n'est pas répertorié dans les attributs lors de l'utilisation de PermitOnly. –