2011-08-18 55 views
6

如何保护我的ConnectionString在WinForm应用程序?安全的ConnectionString

+0

这可以使用完整的使用C#代码加密洞节[link](http://stackoverflow.com/questions/37573551/encrypt-app-config-custom-element-using-cmd?answertab=active#tab -top) –

回答

18

你不能。虽然你可以加密在app.config文件中的连接字符串,应用程序需要能够对其进行解密,并因此总是可以取回未加密的连接字符串,特别是与托管应用程序(也许不是典型的最终用户,但任何有经验的开发人员都可以这样做)

解决方法是不要依靠security by obscurity。连接到使用Windows用户帐户数据库时,使用Windows集成安全性,给用户的权限的最低金额在数据库中。

但往往这仍然是不够的,因为它是非常困难的足够安全数据库时,最终用户直接连接到数据库(往往是因为你需要行级安全性)。为此,您需要拒绝对表和视图的访问,并完全回退到存储过程。

一个更好的办法然而,是防止桌面应用程序直接与数据库进行通信;使用Web服务作为中间层。在这种情况下,您可以完全控制安全性,并且可以将连接字符串安全地存储在(Web)服务器上。

+3

+1为“你不能”。托管应用程序没有绝对的安全性。你可以通过一些东西来加强安全性,比如包括一个web服务层和从数据库中隔离用户,但它不会是完美的。您必须从应用程序的概念中考虑这一点。 –

+0

@Steven“Windows集成安全性”链接已损坏。 :) –

0

这是问了很多在这里...

Encrypting sections and-or settings in an App.config file that will be redistributed

似乎永远不会是它有限的答案...看来它的那些“每一个他们自己的“类型的场景...使用最适合你的情况。

+0

答案非常有限,以答案的形式提出的危险评论具有误导性。 – MickLH

+0

呃就像任何东西加密它的所有者的工作,定期更改“私钥”,以防止黑客破解。天气你加密整个配置或只是其中的一部分是“非常选择”,因此不是有限的,但也许有限不是正确的选择的话,也许“特定的正确”会更适合。 – War

+0

您错过了一点,重点在于对配置进行加密是一个错误的想法,您需要为敏感数据提供安全接口,因为应用程序必须在运行时对其配置进行解密以使其有用。 – MickLH