我正在阅读关于 ASP.NET 和第三方 API 的教程,其中提到 API KEY 和 SECRET KEY 应该存储在 web.config 文件中,以确保生产服务器上的安全,而不是存储在使用它们的类中。但是,我不太确定 web.config 文件比类更安全吗?我了解将其存储在配置文件中的便利性,但我没有看到安全优势?
4 回答
对于初学者,您可以在 web.config 中快速更新 API 密钥。您必须重新编译该类并重新部署该类。
您还可以加密从 asp.net 2.0 开始的 web.config 部分的部分
http://weblogs.asp.net/scottgu/archive/2006/01/09/434893.aspx
如果您可以将其保留在 machine.config 中,那将确保它仅存在于该机器上,而不会存在于其他任何地方。Web.Configs 需要放置在每个环境中,尽管您可以为每台机器保持不同的 web.config,但随着时间的推移,这会变得很困难,因为您必须让它们保持同步。
您可以加密 web.config 的选定部分。
这是一个关于超级简单方法的博客条目。
http://odetocode.com/blogs/scott/archive/2006/01/08/encrypting-custom-configuration-sections.aspx
如果它只存在于服务器上的 web.config 中,那么它并不存在于每个开发人员的机器上。这使其更加安全,因为您泄露秘密的风险降低了。
没有安全优势。有一个方便的好处,因为如果它们发生变化,您不必重新编译使用这些值的类。
从安全角度来看,这些类具有相同的安全级别。web.config 和任何类文件(在 App_Code 中)或已编译的程序集(在 bin 文件夹中)将无法下载(这些目录未映射到人们可以从中下载的虚拟目录)。
但是,如果获得它们,它们中的任何一个都确实没有安全性。web.config 文件易于阅读,并且使用 Reflector 等工具,可以轻松查看已编译程序集中的常量。
正如Scott Guthrie 在他的博客中指出的那样,web.config 相对于已编译程序集的唯一好处是您可以加密 web.config 文件的各个部分。