2009-09-09 15 views
3

La réponse à cette question: Declarative Security--what's this? Ne me dit pas vraiment beaucoup ... ne me dit rien du tout d'être franc.Qu'est-ce que la "sécurité déclarative"? En général

je suis tombé sur un blog sur les performances dans .NET et mentionné ceci:

Utilisez-vous la sécurité déclarative?

Dans la mesure du possible, il est recommandé d'utiliser une sécurité déclarative au lieu de contrôles de sécurité impératifs. L'implémentation actuelle de la demande améliore les performances et le support avec les outils de sécurité en cours de création pour faciliter les audits de sécurité. Notez que si vos contrôles de sécurité sont conditionnels dans une méthode, la sécurité impérative est votre seule option.

Lien: http://weblogs.asp.net/sanjeevagarwal/archive/2009/09/09/net-code-performance-tips-part-1.aspx

Que signifie la "sécurité déclarative" pour? Quelqu'un peut-il donner un exemple concret?

Répondre

4

En général, c'est la sécurité basée sur l'annotation au lieu du codage. Par exemple, dans .NET, vous pouvez appliquer un attribut à une méthode qui oblige le code généré à demander à l'appelant d'avoir certains droits.

Voici un exemple concret: http://www.knowdotnet.com/articles/securityattributes.html

+0

Nice, et un bon exemple. – KdgDev

9

déclaratives caractéristiques permettent au programmeur d'exprimer des intentions au moment de la conception. Ces intentions sont appliquées en interne par le moteur de la langue — en d'autres termes, nous ne voyons pas comment c'est fait. Un exemple serait des attributs:

[RequireDeletePermission] 
public void DeleteFile(string fileName) 
{ 
} 

Cette déclaration indique que la méthode DeleteFile ne peut pas être appelé sans DeletePermission. (Ceci est un exemple inventé.) Le runtime appliquera cette règle pour vous. Plus de code est requis. Les autorisations SQL entrent également dans cette catégorie.

Les règles que vous appliquez en utilisant votre propre code sont appelées impératif. Vous pouvez utiliser n'importe quel mécanisme de langage pour accomplir cela, mais le code lui-même (par opposition à un construit intégré) exprime votre intention. Vous verrez ce genre de chose dans les déclencheurs SQL, lorsqu'aucune contrainte formelle ne capture la restriction exacte requise.

CREATE TRIGGER TR_UPD_fix_image_filename ON products AFTER UPDATE 
AS 
BEGIN 
    UPDATE product SET image=itemnumber + '.jpg' WHERE id IN (SELECT id FROM inserted) 
END 

(D'accord, donc il est un exemple stupide. De par sa conception, la plupart des cas typiques peuvent être traitées par des contraintes.)

1

Vous pouvez consulter des exemples AOP. En général, déclaratif implique une organisation de code lorsque le code implémentant la sécurité est détaché de l'autre code (à partir de la logique métier, par exemple). Habituellement, tous les artefacts de sécurité se concentrent en un seul endroit, ce qui simplifie le développement des deux composants: logique métier et sécurité.

Questions connexes