在无人参与的桌面应用程序上保护SQL Server连接字符串的安全



我们有在现场的Windows 7 Pro服务器上运行的应用程序。他们可能无人看管,因此不安全。它们连接到Azure中的Sql服务器。我们正在试图找到一种方法来保护连接字符串的安全,该字符串目前是纯文本的。我们可以加密字符串,但这只是将问题转移到保护密钥上。这些不是Web应用程序。我们主要担心的不是机器会被盗,而是登录信息会被暴露。我们可以使用像ConfuserEx这样的模糊技术来使查找未加密的字符串变得非常困难,但有最佳实践吗?我知道SAML、WSFED、OAUTH、OPENID是Azure AD用于验证应用程序请求的受支持协议,但我认为要将其纳入非Web应用程序是一座需要攀登的大山。

我认为您可能试图保护错误的东西。

考虑到这是一个很可能受到对手持续攻击的应用程序,您应该考虑您的连接字符串被破坏,因为无论您在应用程序中的某个时刻采取何种措施,都需要一个纯文本字符串来连接。坚定的攻击者会发现这一点。

您应该花时间保护的是您的数据库。你应该能够在传单上打印你的连接字符串,并将其粘贴在机器的侧面,仍然不必担心数据安全。

如果您将每个连接都授予数据库根访问权限,那么您就遇到了问题。但是,如果你已经仔细定义了数据库角色,他们唯一可以访问的数据就是他们应该访问的数据。那么用户所能做的就是访问他们无论如何都可以从应用程序访问的数据了。

确保您有审核日志,可以查看并查找异常活动(这是Azure最近开始做的事情)。攻击者在测试其帐户的限制时会收到大量拒绝访问的错误。学会发现它们。

当然,有一个API接口会更好,在那里你可以有某种方式的身份验证和验证,但我理解,有时我们必须使用我们所拥有的。

TL;DR

除了最简单的加密/模糊处理之外,不要费心去做任何事情。只要确保当有人得到你的连接字符串时,他们不会对它造成任何损害。锁定你的数据库。审计经常看看审计。

最新更新