Il me semble que la plupart des développeurs ignorent complètement ces fonctionnalités. Les gens préfèrent gérer les exceptions de sécurité comme des exceptions génériques reposant sur des rôles et des droits Windows standard au lieu d'apprendre à utiliser les moyens CAS pour améliorer la sécurité - probablement parce que CAS est assez confus dans sa logique et son nom. Est-ce que quelqu'un peut suggérer des règles générales ou des bonnes pratiques pour utiliser CAS de manière optimale?Quelqu'un utilise vraiment la sécurité d'accès au code pour protéger ses assemblages et/ou ses méthodes?
Répondre
Oui et non. Malheureusement, vous avez raison: les développeurs utilisent rarement le CAS, et encore moins l'utilisent pleinement. Dans quelques situations, est-ce que je les vois en train de le faire (d'accord, ce n'est pas vraiment les programmeurs mais l'organisation qui les force ...)
En plus d'être utilisé pour permettre aux utilisateurs de limiter les assemblages téléchargés sur Internet (par exemple) - Bien que ce soit rarement déployé en dehors de Silverlight - j'ai vu deux utilisations principales de CAS.
D'abord, il y a les limites de la politique générale, généralement le moyen le plus facile de se familiariser avec CAS (surtout que VS peut automatiquement générer le fichier de politique pour vous). J'ai vu cela en usage (rarement) lorsqu'une entreprise sensible (par exemple des banques) a un développement personnalisé par un tiers d'un système qui doit être sécurisé. Cela peut leur profiter en ajoutant des limitations supplémentaires sur ce qu'ils ne savent pas que leurs programmeurs font.
Deuxièmement, il y a des demandes de liaison très spécifiques, dans la situation (encore rare) où vous avez un module fonctionnant avec des privilèges relativement élevés, et vous ne voulez que des assemblys spécifiques appelant dans votre module. Par exemple, la semaine dernière, j'avais un client avec un module qui écrivait dans ActiveDirectory, et je voulais limiter l'accès à cette fonction uniquement à partir d'un système spécifique.
Bien sûr, CAS est beaucoup plus grand que cela, mais ce sont vraiment les deux meilleurs endroits pour commencer. En règle générale, et c'est vrai pour tout, ne décidez pas de l'utiliser juste parce que c'est là, sauf si cela répond à un besoin que vous avez. La politique est la plus simple et a le plus de sens à mettre en place à l'avance.
Merci - très bonne réponse – JohnIdol
Bonne réponse, mais il peut sembler aux lecteurs que vous voulez dire que SilverLight utilise CAS, ce qui n'est pas le cas, il a délibérément abandonné CAS et a utilisé son propre modèle de sécurité, voir: http://msdn.microsoft.com/fr-fr/magazine/cc765416.aspx – Abel
Voir également this discussion.
Le problème est exacerbé car beaucoup de code (peut-être trop) fonctionne à pleine confiance. Et puis les seules vérifications qui sont effectuées sont des choses comme les contrôles PrincipalPermissionAttribute - la plupart des autres sont simplement ignorés. Donc, dans de nombreux cas, il n'y a pas beaucoup de points! À moins que vous chargiez dans des fichiers externes (non approuvés) [et que vous ayez besoin de CAS], cela n'ajoute pas beaucoup dans beaucoup de cas (et oui, il y a beaucoup d'exceptions).
CAS est beaucoup plus utile pour les clients s'exécutant dans le bac à sable (par exemple, téléchargé sur Internet). Sliverlight prend cela à l'extrême, avec des règles plus strictes (en particulier autour de la réflexion) que régulière .NET.
- 1. Quel type d'identifiant YouTube utilise-t-il pour ses vidéos?
- 2. OpenID et ses défauts
- 3. Pourquoi le savon utilise-t-il ses messages envolope?
- 4. Enveloppe un exécutable pour diagnostiquer ses invocations
- 5. Quels sont les frameworks que Mint.com utilise pour ses graphiques à secteurs et à barres?
- 6. Rendu UIView avec ses enfants
- 7. En détail: mklink et ses options
- 8. WPF - Puis-je empêcher UserControl d'exposer ses éléments enfants nommés?
- 9. ASP.NET peut un objet obtient ses attributs
- 10. Comment attacher plus d'un contrôleur pour afficher ses sous-vues
- 11. WPF Grid - aligner ses enfants automatiquement
- 12. WPF ListBox qui dispose ses éléments horizontalement
- 13. Puis-je utiliser le code de la bibliothèque google chrome gui pour ses propres applications de bureau?:
- 14. Lier StackPanel.Visibilité à la propriété Visibility de ses enfants
- 15. Faire en sorte qu'une fonction puisse modifier ses paramètres
- 16. Méthodes statiques et sécurité des threads
- 17. Un bean EJB3 peut-il s'auto-injecter et appeler ses propres méthodes via un conteneur EJB?
- 18. Impossible de charger la DLL ou l'une de ses dépendances
- 19. Classe d'amis et tous ses descendants
- 20. Microsoft.SqlServer.Management.Smo et ses frères travaille sur SQL2000?
- 21. Est-ce que l'héritage cache vraiment les méthodes?
- 22. PHP: Trier un tableau par la longueur de ses valeurs?
- 23. Comment puis-je faire Html.DropDownList coder ses valeurs?
- 24. Accéder facilement à un tableau en fonction de ses dimensions
- 25. Comment gcc sur Solaris trouve-t-il ses bibliothèques?
- 26. MFC - Copier un répertoire, ses sous-dossiers et fichiers
- 27. Un programme peut-il déterminer l'utilisation de ses ressources Oracle?
- 28. Appel de services Web via la sécurité de code pour la connexion au service (.NET/WCF)
- 29. Comment faire un DataGridView qui n'aligne pas ses lignes au sommet du contrôle?
- 30. VB6 code source vraiment utile
voir aussi http://stackoverflow.com/questions/1566934/is-code-access-security-of-any-real-world-use –