Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 安全吗?在图书馆中存储数据库访问方法_C#_Asp.net_Silverlight - Fatal编程技术网

C# 安全吗?在图书馆中存储数据库访问方法

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

首先,我有两个项目: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文件并将其提供给其他人

提前谢谢


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服务的位置和身份验证方案等,则仍然可以调用方法
  • 您可以将连接信息存储并加密到配置文件中

即使您将方法设置为私有,它们也可以使用反射或反编译DLL来获取代码,然后访问数据库

  • 您可以有一个WCF服务,它执行所有DB交互,客户端通过该服务进行连接。通过这种方式,无法建立直接连接,但如果最终用户可以确定WCF服务的位置和身份验证方案等,则仍然可以调用方法
  • 您可以将连接信息存储并加密到配置文件中

公开与否,都是不安全的。如果您的东西访问数据库时没有适当的访问限制,无论以何种方式,都是从一台不可信的计算机上访问的,那么您的数据库将是完全开放的


正确的方法是在Silverlight和数据库之间放置一个web服务,并对该服务进行彻底的访问检查。

公开与否,这将是不安全的。如果您的东西访问数据库时没有适当的访问限制,无论以何种方式,都是从一台不可信的计算机上访问的,那么您的数据库将是完全开放的


正确的方法是在Silverlight和数据库之间放置一个web服务,并对该服务进行彻底的访问检查。

防止任何问题的最安全方法可能是不允许从公共internet远程访问数据库。这通常是通过在web服务器上运行服务(服务可以是网站)然后使用服务连接到数据库来处理的。基本上,您应该确保不能从网络之外的计算机直接连接到数据库服务器。

防止任何问题的最安全方法可能是不允许从公共internet远程访问数据库。这通常是通过在web服务器上运行服务(服务可以是网站)然后使用服务连接到数据库来处理的。基本上,您应该确保不能从网络之外的机器直接连接到数据库服务器。

如果数据库存储了任何个人身份信息,如果dll落入坏人之手,任何人都可以访问您的数据库。你可以根据自己的感受接受评论。只是为了澄清一下,你的Silverlight会直接访问数据库吗?换句话说,客户端可以访问您的连接字符串吗?不,Silverlight客户端它需要通过WCF,WCF是唯一会引用QueryService dll文件的项目。如果数据库存储了任何个人标识信息,如果dll落入坏人之手,任何人都可以访问您的数据库。你可以根据自己的感受接受评论。只是为了澄清一下,你的Silverlight会直接访问数据库吗?换句话说,客户端可以访问您的连接字符串吗?不,Silverlight客户端它需要通过WCF,WCF是唯一可以访问您的连接字符串的项目