我们在现场运行Windows 7 Pro服务器上的应用程序。他们可能无人看管,因此不安全。它们连接到Azure中的Sql server。我们试图找出一种方法来保护连接字符串,该连接字符串目前是纯文本格式。我们可以加密字符串,但这只是将问题转移到保护密钥。这些不是Web应用程序。我们的主要关注点不是机器会被盗,而是登录将被暴露。我们可以使用像ConfuserEx这样的混淆技术来使找到未加密的字符串变得非常困难,但是有最佳实践吗?我了解SAML,WSFED,OAUTH,OPENID是Azure AD用于验证应用程序请求的受支持的协议,但我认为将其纳入非Web应用程序是一个很大的障碍。
答案 0 :(得分:0)
我认为你可能会试图保护错误的东西。
考虑到这是一个很可能受到攻击者持续攻击的应用程序,你应该考虑你的连接字符串被泄露,因为无论你在应用程序的某个点上采取什么样的措施,都需要一个纯文本要连接的字符串。坚定的攻击者会发现这一点。
你应该花时间保护你的数据库。您应该能够在传单上打印连接字符串并将它们粘贴到机器的一侧,而不必担心数据安全性。
如果您授予与数据库root访问权限的每个连接,那么您就会遇到问题。但是,如果您已经仔细定义了数据库角色,那么他们可以访问的唯一数据就是他们应该有权访问的数据。然后,用户可以做的就是访问他们本可以从应用程序访问的数据。
确保您拥有可以查看的审核日志,并查看异常活动(这是Azure最近开始执行的操作)。攻击者在测试他们获得的帐户限制时会收到大量访问被拒绝的错误。学会发现它们。
当然,拥有一个可以进行某种身份验证和验证的API接口会更好,但据我所知,有时我们必须处理我们所拥有的内容。
除了最简单的加密/混淆之外,不要试图做任何事情。只要确保当有人获得你的连接字符串时,他们不会对它造成任何损害。锁定数据库。审计。经常看看审计。