安全吗?在库中存储数据库访问方法
本文关键字:存储 数据库 访问 方法 安全 | 更新日期: 2023-09-27 17:54:59
首先,我有两个项目正在进行:ASP;. NET和Silverlight两者都使用一个类(库类项目中的QueryServiceClass),该类具有用ADO访问数据库的查询方法。. NET,操作数据库。(打开数据库连接,添加客户,编辑,更新等)
所以我将它们存储到c#类库中,并与ASP共享。Net和Silverlight。ASP。. NET项目和Silverlight的Web项目将有一个对QueryServiceClass项目的引用。
但是如果我发布ASP。. NET/Silverlight项目中,QueryServiceClass项目的dll文件也应该被发布(此时dll应该位于服务器端)。
因为QueryServiceClass的方法必须是公共的。NET/Silverlight项目可以使用它。所以有人可能会用那个dll访问数据库?这样安全吗?
= = = = = =编辑
在Silverlight的Web项目中,我使用WCF继承QueryServiceClass和一个接口来访问数据库,因此在Silverlight客户端上,它将通过WCF访问数据库。我更担心的是有人可能会把dll文件从服务器上拿走,然后给别人。
提前感谢。
王您可以将成员设置为内部成员而不是公共成员,并修改AssemblyInfo.cs类,使内部成员对特定的程序集可见。
[assembly: InternalsVisibleTo("OtherLib.Domain.Stuff")]
这不会阻止别人反汇编你的DLL来获取信息,但会阻止人们在他们的代码中使用你的DLL。
是否公开,将不安全。如果您的东西在没有适当访问限制的情况下,以任何方式从一台不可信的计算机访问数据库,那么您的数据库将被完全开放。
正确的方法是在Silverlight和数据库之间放置一个web服务,并在服务中进行彻底的访问检查。
防止任何问题的最安全方法可能是不允许从公共internet远程访问数据库。这通常是通过在web服务器上运行服务(服务可以是网站),然后用服务连接到数据库来处理的。基本上,您应该确保不能从网络之外的机器直接连接到数据库服务器。
您可以通过将DB登录凭据存储在配置文件中并对其进行加密来确保安全。然后他们可以访问dll,但没有有效的凭据无法连接到数据库。
这是一篇描述在网络中加密值的文章。配置文件。
编辑:把这个和Chris的建议结合起来,你就有了一个好的、安全的解决方案。即使您将方法设为私有,它们也可以使用反射或反编译DLL来获取您的代码,然后访问数据库。
- 你可以有一个WCF服务,它完成所有的DB交互,客户端通过该服务连接。这种方式不能建立直接连接,但如果最终用户可以确定WCF服务的位置和身份验证方案等,则仍然可以调用方法。 你可以在配置文件中存储和加密连接。