【发布时间】:2014-04-08 22:47:54
【问题描述】:
存在哪些本地技术可以加密/解密数据库中的字符串以读取到单个应用程序中?
场景:
我有一组连接字符串,我需要使用它们来安全地访问一组生产服务器,用于轮询应用程序。我想将它们存储在数据库中的表中,并在需要时通过服务将它们取出。这将使我能够让少数用户(具有权限)编辑/添加这些条目。
我使用此应用程序的目标受众都是开发人员,这些服务器用于监控我们的生产和暂存环境中的某些特定 SQL 缺陷,我可能需要稍后修复这些缺陷。这是一个 devops 应用程序。
知道我的目标受众是开发人员,并且这些是生产服务器,我想“锁上门”以防止人们主动看到生产密码/用户帐户,除非他们需要它们(审计目的)。我意识到一把锁只和门框一样好,只是为了让诚实的人和小偷远离,任何有奉献精神的人最终都可以通过我尝试设置的任何安全措施。
问题:
在 C# 中存在什么技术来保护这些信息,并且仍然允许我动态添加/更改连接字符串,但仍然保持数据库中的数据相当安全?我愿意对 machine.config 等进行一些更改,但我也需要积极开发应用程序,所以希望它可以在 machine.config1 或 web 中完成。配置,以允许在部署到 devops 服务器之前进行本地开发。
我了解我的一些替代建议是:
- 使用强数据库密码将他人拒之门外
- 使用强大的架构组织将人们拒之门外
- 相信开发人员,他们为您的组织工作(请参阅“审计跟踪”。我需要努力确保生产凭据的安全)
- 不要让人们访问服务器并将它们存储在 web.config 中(首先已经计划好了)
理想情况下:
理想情况下,我会在应用程序服务器上使用私钥进行加密/解密,但我不完全知道执行此操作的最安全方法,而不是 base64。我知道这不是加密。
.NET 本机堆栈中有哪些技术可以安全地加密/解密单个应用程序中可能包含特殊字符的字符串,以及该技术的示例用法是什么?
如果我知道名字和技术,我就不会问这个问题了。
1使用 machine.config/web.config 来表示 .NET 堆栈中固有的内容。我愿意接受任何建议。
【问题讨论】:
-
你检查过
System.Security.Cryptography吗?这是Sample -
别忘了数据库可能也有一些加密和解密的方法。
-
数据库加密!=有线加密,对吧?我不关心数据如何存储在磁盘上,我关心 select * 说什么......
标签: c# .net encryption