begin process at 2010 02 10 06:40:27
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Système

 > 

Sécurité

 > 

Sécurité des assemblies


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Sécurité des assemblies

mercredi 1 août 2007 à 11:19:39 | Sécurité des assemblies

yoyo041080

Bonjour à tous,

Supposons que j'ai 3 assemblys A, B et C

Dans l'assembly A,  une classe Ca dont les méthodes sont :
* methA1
* methA2
* methA3

Dans l'assembly B, une classe Cb dont les méthodes sont :
* methB1
* methB2
* methB3

Dans l'assembly C, une classe Cc dont les méthodes sont :
* methC1
* methC2
* methC3

Prérequis obligatoire : Toutes les méthodes de la classe Cb (de l'assembly B) doit pouvoir appeler les méthodes de la classe Cc (de l'assembly C) et vice-versa, les méthodes et les classes doivent donc être public (pas "friendly")

Ce que je voudrais faire, c'est que depuis les méthodes de ma classe Ca (de mon assembly A (methA1, methA2, methA3)), je ne puisse par exemple :
* n'avoir accès que à la méthode methB2 de ma classe Cb de mon assembly B. Les deux autres méthodes methB1 et methB3 ne doivent pas être accessible à ma classe Ca


J'ai trouvé pas mal d'attributs de sécurité qui permettent d'empecher l'accès à certaines ressources (disques, réseaux, etc), mais pas aux méthodes...

Une idée ou une piste ?

Merci
mercredi 1 août 2007 à 12:45:27 | Re : Sécurité des assemblies

jesusonline

Membre Club Administrateur CodeS-SourceS
[déplacé vers csharpfr.com, plus de chance de réponses ]

Je ne suis pas sur que ce mécanisme soit implémenté au niveau de .net. Mais si c'est le cas il faut aller voir du coté de CAS (Control Access Security).

Tiens nous au courant si tu as d'avantages d'infos, la question m'interesse.


Cyril - MSP - MCPD ASP.net & MCTS SQL
mercredi 1 août 2007 à 17:06:06 | Re : Sécurité des assemblies

Bidou

Administrateur CodeS-SourceS
Salut,
Tu peux jeter un oeil sur le blog de Raptorxp.
Je ne sais pas si ça répond exactement à la question, je n'ai pas relu le topic...

http://blogs.codes-sources.com/raptorxp/archive/2006/10/22/Fonctionnement-de-Code-Access-Security.aspx



-Blog-
mercredi 1 août 2007 à 17:17:21 | Re : Sécurité des assemblies

yoyo041080

Merci

Déjà lu, mais ce n'est pas ce que je chercher apparemment

mercredi 1 août 2007 à 17:58:34 | Re : Sécurité des assemblies

jesusonline

Membre Club Administrateur CodeS-SourceS

> Bidou : le message de raptorXP est sur le fonctionnement général de CAS. Il faudrais un attribuer spécifique qui prend en paramètre la publickey de ton assembly appellante. Mais là encore je suis pas sur que ca serve à quelque chose.

Sinon, peux tu nous expliquer le contexte ? es tu sur d'avoir vraiment besoin de faire ce truc tout bizarre ? on peut pas simplifier ? L'autre solution que je vois c'est de le faire "manuellement" en rajoutant un argument à ta méthode et tu lui passes une clé ... mais bof :s Où alors en fouillant au niveau du stack trace pour regarder le caller et vérifier l'assembly. Mais comment connaitre le caller de la fonction ? pour l'instant je suis pas sur que ce soit possible mis à part provoquer manuellement une exception :D


Cyril  - MSP - MCPD ASP.net & MCTS SQL
mercredi 1 août 2007 à 18:18:43 | Re : Sécurité des assemblies

jesusonline

Membre Club Administrateur CodeS-SourceS

static void Main( string [] args)
{
      StackTrace st = new StackTrace ();

      foreach ( StackFrame frame in st.GetFrames())
      {
            MethodBase mi = frame.GetMethod();
            Console .WriteLine( "{0} - {1}.{2}" , mi, mi.DeclaringType.Assembly.GetName().Name, mi.DeclaringType);
      }
      Console .ReadLine();
}

Bon, c'est pas une méthode très propre, c'est couteux et surtout, surtout ca ne fonctionnera pas si ton assembly n'a pas les droits de reflexion (restriction CAS) (j'ai pas testé mais ca parait assez logique)

Mais je ne suis pas expert en sécurité CAS, si tu as un peu de temps, je te conseille de regarder au niveau de CAS quitte à créer ta propre sécurité si elle n'existe pas :-p


Cyril - MSP - MCPD ASP.net & MCTS SQL
jeudi 2 août 2007 à 09:18:59 | Re : Sécurité des assemblies

yoyo041080

Le contexte :

1) je donne la possibilité à mes utilisateurs finaux d'écrire certaines règles métiers de traitement sous la forme de scipt VB.net
2) Je compile et exécute à la volée ces scripts via une assembly B
3) Ces scripts ont accès à une assembly A contenant mes objets métiers (c'est nécessaire pour leur traitement)

Le souci : les utilisateurs bidouilleur ayant accès aux objets métiers peuvent faire un peu tout ce qu'il veulent dans la mesure où ils ont accès à la totalité des fonctionnalités (méthodes) de ces objets : DANGEREUX !

C'est pour cela que je veux définir quelles méthodes des mes objets métiers de mon assembly B seront dispo pour mes scripts de mon assembly A


Mes pistes pour le moment :

<StrongNameIdentityPermission(SecurityAction.LinkDemand

, Name:=
"NOM_DE_L'assembly_Autorisée")> _
=> permetrai de spécifier pour les méthodes l'assembly qui peut accèder à celle-ci : ne semble pas fonctionner... (vu sur [ Lien ])

Je vais tester  [ Lien ] : clé publique et utilitaire.net "sn"

Je vous tiens au courant

Si d'autres ont une piste d'ici là
jeudi 2 août 2007 à 16:26:46 | Re : Sécurité des assemblies

yoyo041080

Dans la famille, je cherche les trucs "impossible", ben... je voudrais yoyo

[ Lien ]
http://blog.devstone.com/aaron/archive/2006/01/22/1442.aspx

C'était appremment possible avec StrongNameIdentityPermission (voir les liens donnés dans mon post précédent), mais jusqu'au framework 1.1

Depuis le framework 2.0, ça fait 4 sites de gars de chez microsoft qui explique que si l'assembly tourne en mode "Full Trust", le StrongNameIdentityPermission n'est pas vérifié...

Certains me diront : "ben change le niveau de trust de ton assembly". Jen e peux pas, elle est généré à la volée...

Je continue à chercher, toutes les pistes restes les bienvenue...

jeudi 2 août 2007 à 16:53:32 | Re : Sécurité des assemblies

jesusonline

Membre Club Administrateur CodeS-SourceS
Tu charges tes assembly dynamique dans le meme appdomain ou non ? Il ne faut pas que tu les charges dans le meme appdomain car tu dois avoir des options de sécurité au niveau d'un AppDomain, il doit meme etre possible de changer le trust level dynamiquement d'un appdomain.

Si tu ne l'as pas déjà fait, essate de regarder les options de sécurité au niveau des appdomains.


Cyril - MSP - MCPD ASP.net & MCTS SQL
jeudi 2 août 2007 à 16:58:54 | Re : Sécurité des assemblies

yoyo041080

Là tu me poses une colle  

Je ne fais rien de spécial pour ne pas le charger dans le même, je te dirai donc que oui, c'est chargé dans le même.

Je jette un oeil sur cette piste en même temps


Cette discussion est classée dans : méthodes, classe, sécurité, assembly, assemblys


Répondre à ce message

Sujets en rapport avec ce message

classe et assembly [ par chris81 ] bonjour je viens de me mettre au c# et j'y comprend pas gd chose :)j'aimerais savoir comment on fait pour appeler une classe et comment on fait pour c ArrayList et objets [ par engelho ] Bonjour,Je suis en train de mettre en place une ArrayList dont chaques élément est un objet (tiré d'une classe que j'ai écrit plus tôt).Pour l'afficha Controle d'accessibilité d'une méthode / propriété [ par thiosyiasar ] Bonjour a tous !Voila mon PB:J'ai deux assembly :Un pour l'accès aux données.Un autre contenant les entitésLa couche d'accès aux données communique vi Parser une assembly [ par Equinox84 ] Bonjour tout le monde,Une petite question qui porte sur la récupération d'un type dans une assemblySi j'ai plusieurs classes qui implementent une inte Probleme de FileIOPermission [ par mastercatz ] Bonjour J'ai un problème avec les FileIOPermission dans mes applications. J'ai une première classe qui demande une permission sur un fichier par le bi Enlever l'héritage d'une classe [ par JuS ] Je m'explique ...Existe-t-il une méthode permettant de ne pas avoir accès aux méthodes héritées d'une classe ? (à part la méthode de créer les mêmes m .Net Remoting [ par CrazyCodeur ] Bonjour ! Je fais une petite appli win en c# utilisant le .NET Remoting et j'ai un petit soucis. Tout fonctionne correctemnt si j'appelle les méthodes deux classes qui se ressemblent [ par mathmax ] Bonjour,J'ai 2 classes qui' se ressembent de part leurs constructeurs, leurs méthodes et leur propriétés. On ne peut pas dire que l'une hérite de l'au Creation dynamique d'objet, InvalidCastException [ par Warny ] Salut,Je cherche à créer un chargeur de classe. Celui-ci doit me permettre de trouver les classes dans une assembly ou un ensemble d'assembly qui déri Pb de sécurité avec du remoting [ par cyrilcanovas ] Bonjour,Pb de sécurité avec du remoting.J'ai trois Assembly : une cliente.une qui contient les interface des objets distants.Enfin, l'assembly serveur


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,312 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales