我有一个小小的安全问题。 我使用RijndaelManaged类来加密字符串(请参阅此主题中的第一个答案:https://social.msdn.microsoft.com/Forums/vstudio/en-US/d6a2836a-d587-4068-8630-94f4fb2a2aeb/encrypt-and-decrypt-a-string-in-c或此问题:How to protect encryptor parameters themselfs)。
这很有效。但是,现在问题是我是否应该在代码或(未加密的)web.config中保存PasswordHash,SaltKey和ViKey。
我将它们保存在web.config中的唯一原因是能够根据DTAP环境更改密钥的值。显然,D,T和A环境通常无法访问。
因此,我的问题是: 什么更安全?将密钥保存在web.config或代码中?我应该照顾哪些安全问题?
答案 0 :(得分:2)
我明确建议存储在web.config中。代码中的东西将被检入您的源代码管理系统,在那里很难保密。
您甚至可以使用机器密钥加密web.config中的某些设置,从而使其更难窃取。
有关详细信息,请参阅this article。
答案 1 :(得分:1)
理论上,将其保存在代码中更安全,因为可以使用简单的文本编辑器读取web.config
,但编译后的代码需要以某种方式进行解释,例如:反编译器,以获取字符串。
但是只要有人违反了您的服务器,他/她就可以查看这两个中的任何一个,任何真正的安全级别都已丢失。实际上,这意味着他们处于相同的安全水平
基于此,我将它们保存在web.config
(或数据库)中,因为代码不能存储非常量值。