C# 安全吗?在图书馆中存储数据库访问方法
首先,我有两个项目:ASP.NET和Silverlight 两者都使用一个类(库类项目中的QueryServiceClass),该类具有使用ADO.NET访问数据库的查询方法,从而操纵数据库。(打开数据库连接、添加客户、编辑、更新等) 因此,我将它们存储到一个C#类库中,并与ASP.Net和Silverlight共享。 ASP.NET项目和Silverlight的Web项目将引用QueryServiceClass项目 但是如果我发布ASP.NET/Silverlight项目,QueryServiceClass项目的dll文件也应该发布(此时dll应该位于服务器端) 因为QueryServiceClass的方法必须是公共的,所以ASP.NET/Silverlight项目可以使用它。 所以有人可以用这个dll访问数据库?这样安全吗 ====== 编辑 在Silverlight的Web项目中,我在QueryService类和接口中使用WCF来访问数据库,因此在Silverlight客户端上,它将通过WCF访问数据库。 我更担心的是,有人可能会从服务器上获取dll文件并将其提供给其他人 提前谢谢C# 安全吗?在图书馆中存储数据库访问方法,c#,asp.net,silverlight,C#,Asp.net,Silverlight,首先,我有两个项目:ASP.NET和Silverlight 两者都使用一个类(库类项目中的QueryServiceClass),该类具有使用ADO.NET访问数据库的查询方法,从而操纵数据库。(打开数据库连接、添加客户、编辑、更新等) 因此,我将它们存储到一个C#类库中,并与ASP.Net和Silverlight共享。 ASP.NET项目和Silverlight的Web项目将引用QueryServiceClass项目 但是如果我发布ASP.NET/Silverlight项目,QueryServi
King您可以将成员设置为内部成员而不是公共成员,并修改AssemblyInfo.cs类,使内部成员对特定组件可见
[assembly: InternalsVisibleTo("OtherLib.Domain.Stuff")]
这不会阻止有人分解您的DLL以获取信息,但会阻止人们在其代码中使用您的DLL。您可以将您的成员设置为内部成员而不是公共成员,并修改AssemblyInfo.cs类,使内部成员对特定组件可见
[assembly: InternalsVisibleTo("OtherLib.Domain.Stuff")]
这不会阻止其他人分解您的DLL以获取信息,但会阻止人们在代码中使用您的DLL。您可以通过将DB登录凭据存储在配置文件中并对其进行加密来确保安全。然后,他们可以访问dll,但没有有效凭据,无法连接到数据库 下面是对web.config文件中的值进行加密的说明
编辑:结合Chris的建议,您就有了一个好的、安全的解决方案。您可以通过将DB登录凭据存储在配置文件中并对其进行加密来确保安全。然后,他们可以访问dll,但没有有效凭据,无法连接到数据库 下面是对web.config文件中的值进行加密的说明
编辑:结合Chris的建议,您就有了一个好的、安全的解决方案。即使您将方法设置为私有,他们也可以使用反射或反编译DLL来获取代码,然后访问数据库
- 您可以有一个WCF服务,它执行所有DB交互,客户端通过该服务进行连接。通过这种方式,无法建立直接连接,但如果最终用户可以确定WCF服务的位置和身份验证方案等,则仍然可以调用方法
- 您可以将连接信息存储并加密到配置文件中
- 您可以有一个WCF服务,它执行所有DB交互,客户端通过该服务进行连接。通过这种方式,无法建立直接连接,但如果最终用户可以确定WCF服务的位置和身份验证方案等,则仍然可以调用方法
- 您可以将连接信息存储并加密到配置文件中
正确的方法是在Silverlight和数据库之间放置一个web服务,并对该服务进行彻底的访问检查。公开与否,这将是不安全的。如果您的东西访问数据库时没有适当的访问限制,无论以何种方式,都是从一台不可信的计算机上访问的,那么您的数据库将是完全开放的
正确的方法是在Silverlight和数据库之间放置一个web服务,并对该服务进行彻底的访问检查。防止任何问题的最安全方法可能是不允许从公共internet远程访问数据库。这通常是通过在web服务器上运行服务(服务可以是网站)然后使用服务连接到数据库来处理的。基本上,您应该确保不能从网络之外的计算机直接连接到数据库服务器。防止任何问题的最安全方法可能是不允许从公共internet远程访问数据库。这通常是通过在web服务器上运行服务(服务可以是网站)然后使用服务连接到数据库来处理的。基本上,您应该确保不能从网络之外的机器直接连接到数据库服务器。如果数据库存储了任何个人身份信息,如果dll落入坏人之手,任何人都可以访问您的数据库。你可以根据自己的感受接受评论。只是为了澄清一下,你的Silverlight会直接访问数据库吗?换句话说,客户端可以访问您的连接字符串吗?不,Silverlight客户端它需要通过WCF,WCF是唯一会引用QueryService dll文件的项目。如果数据库存储了任何个人标识信息,如果dll落入坏人之手,任何人都可以访问您的数据库。你可以根据自己的感受接受评论。只是为了澄清一下,你的Silverlight会直接访问数据库吗?换句话说,客户端可以访问您的连接字符串吗?不,Silverlight客户端它需要通过WCF,WCF是唯一可以访问您的连接字符串的项目