使用实体框架动态设置连接字符串时的Silverlight安全性问题

时间:2010-12-03 03:58:27

标签: silverlight security entity-framework wcf-ria-services

我正在使用Entity Framework,并且在许多数据库和服务器上具有相同的模型。我想根据登录用户在运行时设置我的连接字符串。我目前正在我的DomainService中覆盖CreateObjectContext()并在那里设置连接字符串。这很好用,但我担心缺乏安全性。例如,在我的DomainService中,我有一个名为SetConnectionString()的调用方法,每当我需要一个新实体时,我会传入连接字符串。这是从DomainContext(客户端)完成的。由于我使用的是SQL Integrated Security,我担心有人可能会操纵clinet上的连接字符串并访问他们无权使用的数据库。

动态设置我想在运行时使用的域实体的连接字符串的最安全方法是什么?

我确实在数据库中有数据库名称和服务器设置,如果我传入了我的项目ID或其他信息,我可以从DomainService查找,但是我回到了同样的问题 - 有人可以很容易欺骗这个信息。

想法?

-Scott

2 个答案:

答案 0 :(得分:0)

希望我的回答是相关的,因为Flash开发人员面临同样的安全问题......

使这个真正安全的唯一方法(“这”是来自客户端代码的数据库连接)是让每个用户只能对数据库中的数据进行只读访问。

正如您所知,没有办法阻止用户监控/修改您要发送回服务器的数据。即使您加密通信,用户仍然可以访问代码,如果是flash,则可以访问源代码,因为反复无常。

我不是数据库开发人员,但我会对您经常提出的问题进行安全审核,因此以下建议可能有误,但我只是用谷歌搜索,似乎您可以使用视图来限制用户(集合)凭证)到特定信息。

如果没有,这篇文章似乎与你想要的相关:

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

答案 1 :(得分:0)

使用ASP.NET成员资格框架怎么样?使用框架中的Login调用绑定用户登录,以确保用户是授权用户。为要在域服务中保护的每个功能添加“RequiresAuthentication”属性。

以下是有关在Silverlight中使用ASP.NET成员身份的更多详细信息:WCF RIA Services - Authentication, Roles, and Profiles