在源代码中存储敏感信息的最佳实践

时间:2013-03-20 09:57:42

标签: .net security

我很好奇是否有任何关于在源代码中存储一些敏感信息的建议。为了让自己从头开始清楚,我谈论用户密码,信用卡号等等;我说的是API访问密钥,客户端机密和其他与应用程序用户没有直接关系的数据,而是应用程序向各种组件或第三方服务验证自身(也可以考虑数据库连接字符串) web.config文件)。

我正在寻找的是一种方法,如果可能的话,隐藏这些敏感信息(通常是字符串)的明文出现,最好是在源文件(避免以某种方式硬编码)和输出二进制文件中。对于二进制文件我知道有混淆的“解决方案”;然而,对于消息来源,我想不出一个简单的问题。理想情况下,解决方案应该尽可能地源代码控制,允许授权开发人员简单地签出代码并构建它而无需额外的步骤。

如果您对此有任何建议,我非常愿意听到它们。

2 个答案:

答案 0 :(得分:1)

您可以加密密钥和密钥。以xml存储。

应用程序可以解密它&用它。

参见:

Encrypt/Decrypt string in .NET

此外,您可以使用Encoding,这至少比使用纯文本更好。

参见:

Encode and Decode

答案 1 :(得分:0)

我最终选择的解决方案是将所有敏感字符串移到 web.config 文件(或 app.config )中,然后对其敏感部分进行加密。然后我让操作系统和ASP.NET运行时来处理加密/解密。不完美(毕竟你需要有原始app / web.config文件保存明文数据 - 但至少它不必在生产机器上),但非常方便。