首先,我有两个项目在做: ASP.NET和Silverlight都使用一个类(库类项目中的QueryServiceClass),这些类都有query方法来使用ADO.NET访问数据库,操作数据库。(打开数据库连接、添加客户、编辑、更新等)
所以我将它们存储在一个C#类库中,并与ASP.Net和Silverlight共享。ASP.NET项目和Silverlight的Web项目将引用QueryServiceClass项目。
但是如果我发布ASP.NET/Silverlight项目,QueryServiceClass项目的dll文件也应该被发布( dll文件应该位于服务器端)。
因为QueryServiceClass的方法必须是公共的,以便ASP.NET/Silverlight项目可以使用它。所以有人可能会使用dll来访问数据库?这样安全吗?
======编辑
在Silverlight的Web项目中,我使用WCF继承QueryServiceClass和一个接口来访问数据库,所以在Silverlight客户端上,它将通过WCF访问数据库。我更担心的是,有人可能会从服务器上拿到dll文件,然后交给别人。
提前谢谢。
国王
发布于 2011-05-05 03:07:30
您可以将成员设为内部成员,而不是公共成员,还可以修改AssemblyInfo.cs类,并使内部结构对特定asseblies可见。
[assembly: InternalsVisibleTo("OtherLib.Domain.Stuff")]这不会阻止别人反汇编你的DLL来获取信息,但会阻止人们在他们的代码中使用你的dll。
发布于 2011-05-05 03:10:09
无论是否公开,将不是安全的的。如果你的东西在没有适当访问限制的情况下,以任何方式从一台不值得信任的计算机访问数据库,你的数据库将是完全开放的。
正确的方法是在Silverlight和数据库之间放置一个web服务,并在服务中进行彻底的访问检查。
发布于 2011-05-05 03:12:23
也许防止任何问题的最安全的方法是不允许从公共互联网远程访问您的数据库。这通常是通过在web服务器上运行服务(该服务可以是网站),然后使用该服务连接到数据库来处理的。基本上,您应该确保不能从网络外部的计算机直接连接到数据库服务器。
https://stackoverflow.com/questions/5888560
复制相似问题