【发布时间】:2014-05-05 02:43:11
【问题描述】:
我们正在开发一个在远程服务器上运行的 WPF 应用程序。用户通过 RDP 连接到服务器并从远程桌面运行应用程序。
我们希望阻止(非管理员)用户直接连接到 SQL Server。默认情况下,到 (SQL Server) 数据库的连接字符串以纯文本形式存储在 app.config 文件中。如何防止用户打开app.config并读取那里的连接信息?
我已经阅读了有关使用 .NET 的内置工具来加密/解密配置文件 (Encrypting and Decrypting Configuration Sections) 的部分内容的信息,但我不明白这有多安全。应用程序必须具有对加密密钥的读取权限才能解密连接字符串。如果应用程序在当前登录用户的凭据下运行,这意味着用户还必须具有对加密密钥的读取权限。什么是阻止用户使用ConfigurationManager 类(来自 LINQPad 或 PowerShell)访问连接信息?
或者,我是否可以将应用程序设置为始终在指定用户下运行,并仅将加密密钥的读取权限授予该用户?
欢迎提出任何建议和意见。
【问题讨论】:
-
你需要在远程服务器上给用户一个完整的桌面吗?如果不仅给用户一个带有 .exe 的桌面(甚至不是 cmd)。 .exe 可以读取配置,但用户无法访问它。
-
实施这种保护是为了确保除了合法用户之外的任何人都无法读出密钥;它没有被实施以保护它免受用户本身的侵害。
-
@owlstead 有什么方法可以防止用户受到攻击吗?
-
我认为Blam的评论和NothingsImpossible的回答是对的。您要么限制运行时间,要么创建不同的威慑。如果用户可以在完整的运行时环境中运行东西,那么您基本上是在尝试创建一个已知会失败的 DRM 方案。
标签: .net encryption configuration-files