安全性:将加密密钥保存在 web.config 或代码中
本文关键字:config web 代码 存在 保存 加密 密钥 安全性 | 更新日期: 2023-09-27 18:34:24
我有一个小的安全问题。我正在使用 RijndaelManaged 类来加密字符串(请参阅此线程中的第一个答案:https://social.msdn.microsoft.com/Forums/vstudio/en-US/d6a2836a-d587-4068-8630-94f4fb2a2aeb/encrypt-and-decrypt-a-string-in-c 或此问题:如何保护加密器参数本身)。
这很好用。但是,现在出现了一个问题,我是否应该将PasswordHash,SaltKey和ViKey保存在代码或(未加密的)web.config中。
我将它们保存在 web.config 中的唯一原因是能够根据 DTAP 环境更改键的值。D、T 和 A 环境显然不是通常可访问的。
因此,我的问题是:什么更安全?将密钥保存在 web.config 中还是保存在代码中?我应该注意什么安全问题吗?
我绝对建议存储在web.config中。代码中的内容将签入源代码管理系统,在那里很难保密。
您甚至可以使用机器密钥加密 web.config 中的某些设置,使其更难窃取。
有关详细信息,请参阅此文章。
理论上将其
保存在代码中更安全,因为可以使用简单的文本编辑器读取web.config
,但编译后的代码需要以某种方式解释,例如反编译器,才能获得字符串。
但是,一旦有人破坏了您的服务器,他/她就可以查看这两个中的任何一个,任何真正的安全级别都已经丢失了。这意味着实际上它们处于相同的安全级别。
基于此,我会将它们保存在web.config
(或数据库)中,因为代码不是存储非常量值的地方。