VB.Net安全密码到数据库?

时间:2010-06-26 19:29:52

标签: database vb.net encryption

我最近为一位朋友制作了一个小应用程序,然后将其设为公共应用程序,这样做我忘了它连接到我的MS SQL DB并检查值。有人使用Red Gate .Net Reflector来获取我的密码并将其全部销毁。我已经联系了他们的ISP,他们正在调查它,显然这个人有一个静态的ip。

所以这对我来说是一个沉重的代价。我怎样才能防止这种情况再次发生?如何摆脱他们能够使用的不安全连接字符串?

5 个答案:

答案 0 :(得分:2)

绝不硬编码连接字符串。使用为其提供的配置部分(connectionStrings),如果真的是偏执,encrypt it

如果您使用的是共享数据库,则您甚至不应在客户端上拥有连接字符串,而是创建一个代表他们连接到数据库的服务点(例如Web服务)。客户端可以连接到此服务器,您的连接字符串可以安全地支持您的服务,该服务位于您的控制范围内和服务器上。

答案 1 :(得分:2)

不要公开数据库连接,而是让您的应用通过仅具有方法和权限的Web服务或类似方式进行通信,以执行应用所需的操作。

如果您绝对需要数据库连接,请确保用户仅对数据库具有读取权限。

加密连接字符串是一个开始,但您的程序必须知道如何解密它才有用。如果您的程序可以解密它,攻击者也可以 - 您只能影响他需要投入的工作量。

因此,在我看来,您应该公开一个只读服务。

答案 2 :(得分:2)

如果它是一个公共应用程序,您需要为每个用户提供单独的登录,或者在数据库和应用程序之间设置代理,该应用程序对用户进行身份验证并与数据库进行通信。

加密连接字符串无济于事,我认为可以使用内置工具或Crack.net轻松解密。

答案 3 :(得分:1)

如果你是suuuper偏执狂,每次应用程序启动时都会提示系统管理员输入密码(可能是管理界面。)那样它只是内存驻留。

我喜欢这个问题。就像driis所说的那样,即使使用加密的连接字符串,您也需要存储密码(或密钥等)来解密加密的连接字符串。只是同一问题的更多层次。

答案 4 :(得分:1)

在你的配置中使用连接字符串和加密部分将不会阻止这种类型的攻击,它只是为了使配置文件在安装它之外的机器上不可读。

唯一安全的方法是创建连接到数据库以检索数据的Web服务,然后确保Web服务登录仅具有所需的最小权限,或强制Web服务的用户登录和他们冒充该用户进行数据库连接。

您似乎没有防火墙保护来直接停止外部连接到您的数据库,所以我想知道您可能已经暴露于互联网的其他更危险的端口???

使用防火墙将对服务器的访问权限限制为http,https协议可以降低成功攻击的可能性。

相关问题