Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.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#_Winforms_App Config - Fatal编程技术网

C# 加密表单应用程序的连接字符串

C# 加密表单应用程序的连接字符串,c#,winforms,app-config,C#,Winforms,App Config,我已经为我的项目创建了一个表单应用程序。我想在我的网站上为用户下载和测试主机。因为我使用的是配置管理器,所以我必须将配置文件与.exe一起包含,因为应用程序有一个后端远程数据库。当然,直到现在我才意识到我的连接字符串是所有人都可以看到的。我尝试将app.config重命名为web.config,但aspnet_regiis-pef命令在我的vista机器上以管理员身份运行时,只返回一个帮助菜单!即使这个命令起作用并且我将web.config重命名回app.config,下载应用程序时运行该应用程

我已经为我的项目创建了一个表单应用程序。我想在我的网站上为用户下载和测试主机。因为我使用的是配置管理器,所以我必须将配置文件与.exe一起包含,因为应用程序有一个后端远程数据库。当然,直到现在我才意识到我的连接字符串是所有人都可以看到的。我尝试将app.config重命名为web.config,但aspnet_regiis-pef命令在我的vista机器上以管理员身份运行时,只返回一个帮助菜单!即使这个命令起作用并且我将web.config重命名回app.config,下载应用程序时运行该应用程序的计算机是否会自动解密连接字符串?总之,对于新手来说,解决这个难题的最佳方法是什么?为什么aspnet_regiis-pef不运行?我也看过关于这个主题的其他帖子,但不幸的是,它们到目前为止对我来说还不起作用。

要么创建用户/特定的连接字符串,要么将所有数据访问包装在一些web服务中,在这些服务中,您可以控制自动化

创建特定于用户的连接字符串是最简单的,但可能会影响数据库费用。您仍然可以保留一个连接字符串,但可以使用windows标识进行连接。在这两种情况下,您都必须付出一些努力来确保用户不能做超出允许他们做的事情

将数据访问包装到web服务中更易于管理,但需要额外的工作才能使其正常工作。也许你可以看看。优点是多方面的:您可以控制web服务中的权限,并且减少了不需要的查询的暴露


还请注意,即使您加密配置文件中的连接字符串,任何恶意用户都可以对其进行解密。一个简单的反编译器将突出显示您的解密密钥。

或者创建用户/特定的连接字符串,或者将您的所有数据访问包装在一些web服务中,您可以在其中控制自动化

创建特定于用户的连接字符串是最简单的,但可能会影响数据库费用。您仍然可以保留一个连接字符串,但可以使用windows标识进行连接。在这两种情况下,您都必须付出一些努力来确保用户不能做超出允许他们做的事情

将数据访问包装到web服务中更易于管理,但需要额外的工作才能使其正常工作。也许你可以看看。优点是多方面的:您可以控制web服务中的权限,并且减少了不需要的查询的暴露


还请注意,即使您加密配置文件中的连接字符串,任何恶意用户都可以对其进行解密。一个简单的反编译器将突出显示您的解密密钥。

您可以将加密连接字符串存储在app.config中,但必须将加密密钥包含在应用程序的某个位置。因此,这是不安全的,因为每个人都可以反编译应用程序或附加调试器并提取连接字符串。或者监控网络流量。实际上,现在有一种方法可以防止这种情况发生——应用程序可以做的任何事情都可以由每个人手动完成(有权访问应用程序)

设计中的缺陷是应用程序首先需要直接访问数据库。在这种情况下,几乎不可能确保数据库不会损坏(除非数据库仅用于读取数据)。基本上,您必须在数据库服务器上复制大部分业务逻辑,以确保没有请求序列会损坏状态


更好的解决方案是仅通过web服务间接访问数据库。这使您能够更好、更容易地实施服务器端验证,甚至每个用户的身份验证和授权。

您可以将加密连接字符串存储在app.config中,但必须在应用程序中的某个位置包含加密密钥。因此,这是不安全的,因为每个人都可以反编译应用程序或附加调试器并提取连接字符串。或者监控网络流量。实际上,现在有一种方法可以防止这种情况发生——应用程序可以做的任何事情都可以由每个人手动完成(有权访问应用程序)

设计中的缺陷是应用程序首先需要直接访问数据库。在这种情况下,几乎不可能确保数据库不会损坏(除非数据库仅用于读取数据)。基本上,您必须在数据库服务器上复制大部分业务逻辑,以确保没有请求序列会损坏状态


更好的解决方案是仅通过web服务间接访问数据库。这使您能够更好、更容易地实施服务器端验证,甚至每个用户的身份验证和授权。

aspnet\u regis是配置asp.net应用程序的工具,而不是我所知道的winformsYes。但我在网上看到了一个技巧,可以使用aspnet对配置文件进行加密,方法是将其重命名为web.config,执行操作并重新命名为app.config.aspnet。regis是配置asp.net应用程序的工具,而不是我所知道的WinFormsys。但是我在网上看到了一个技巧,可以使用aspnet通过将配置文件重命名为web.config来加密配置文件,执行操作并将其重命名回app.config。对不起,以前的解决方案是将我的应用程序重命名为web.config,然后尝试使用aspnet_regiis-pef命令并将web.config重命名回app.config?不是全部。我重新制定了我的答案,以消除歧义;抱歉,前面的解决方案是指将我的应用程序重命名为web.config,然后尝试使用aspnet_regiis-pef命令并将web.config重命名回app.config?不是全部。我已经重新制定了我的答案