2010-12-03 38 views
1

J'utilise Entity Framework et j'ai le même modèle sur de nombreuses bases de données et serveurs. Je veux définir ma chaîne de connexion au moment de l'exécution en fonction de l'utilisateur connecté. Je suis en train de surcharger CreateObjectContext() dans mon DomainService et de définir la chaîne de connexion. Cela fonctionne très bien, mais je suis préoccupé par le manque de sécurité. Par exemple, dans mon DomainService, j'ai une méthode invoke appelée SetConnectionString() où je passe dans la chaîne de connexions chaque fois que j'ai besoin d'une nouvelle entité. Ceci est fait à partir du DomainContext (côté client). Comme j'utilise SQL Integrated Security, je crains que quelqu'un puisse manipuler la chaîne de connexion sur le clinet et avoir accès à une base de données qu'il n'est pas autorisé à utiliser.Silverlight Problème de sécurité lors de la définition dynamique de la chaîne de connexion avec Entity Framework

Quelle est la manière la plus sûre de définir dynamiquement la chaîne de connexion pour l'entité de domaine que je veux utiliser lors de l'exécution? J'ai le nom de la base de données et les paramètres du serveur dans une base de données que je pourrais consulter depuis le DomainService si j'ai passé mon identifiant de projet ou un autre élément d'information, mais je reviens au même problème - quelqu'un pourrait facilement usurper cette information.

Des idées?

-Scott

Répondre

0

Espérons que ma réponse est pertinente que les mêmes problèmes de sécurité sont confrontés par les développeurs flash ...

La seule façon de rendre ce vraiment sûr (« ce » connexions étant la base de données de votre client code latéral) consiste à faire en sorte que chaque utilisateur n'ait qu'un accès en lecture seule à ses données dans la base de données. Comme vous vous en doutez, il n'y a aucun moyen d'empêcher l'utilisateur de surveiller/modifier les données que vous renvoyez au serveur. Même si vous cryptez la communication, l'utilisateur a toujours accès au code et dans le cas de flash, code source en raison de la décompilation triviale. Je ne suis pas un développeur DB, mais je fais des audits de sécurité de choses comme vous le demandez souvent, donc le conseil suivant pourrait être faux, mais j'ai juste googlé, et il semble que vous pourriez utiliser des vues pour restreindre les utilisateurs (ensembles d'informations d'identification) à des informations spécifiques.

Dans le cas contraire, cet article semble pertinent pour ce que vous voulez:

http://technet.microsoft.com/en-us/library/cc966395.aspx

0

Qu'en est-il en utilisant le cadre de l'adhésion ASP.NET? Attachez la connexion de l'utilisateur avec un appel de connexion dans le cadre pour s'assurer que l'utilisateur un utilisateur autorisé. Ajoutez un attribut "RequiresAuthentication" à chacune des fonctions que vous souhaitez protéger dans votre service de domaine.

Voici plus de détails sur l'utilisation de l'appartenance à ASP.NET avec Silverlight: WCF RIA Services - Authentication, Roles, and Profiles