最近我遇到了一位客户的有趣要求:
如果您必须将登录名/密码存储在.config
文件中,则无法以明文形式存储。此外,如果您考虑在.config
文件中加密此数据,则无法在源代码中对加密密钥进行硬编码。
包含敏感数据的示例配置部分:
<configSections>
<section name="PayUSettings" type="JobSystem.Payments.PayU.PayUSettings, JobSystem.Payments" />
</configSections>
<PayUSettings PosId="265898" Login="xxx" Password="yyy" IsTestMode="False" />
满足此要求的可能解决方案是什么?
答案 0 :(得分:1)
幸运的是.NET已经为您提供了ProtectedConfiguration Provider的这项功能。这可以使用内置于windows中的计算机或用户级密钥容器来存储密钥信息。
https://msdn.microsoft.com/en-us/library/53tyfkaw(v=vs.80).aspx
如果这是一个Web应用程序,那么IIS使用aspnet_regiis.exe可以非常简单地加密web.config文件的任何部分。见链接:
https://msdn.microsoft.com/en-us/library/zhhddkxy%28v=vs.140%29.aspx
如果这不是一个Web应用程序,那么由于您需要自己实现ProtectedConfiguration提供程序,这有点困难(但并不多)。这里有一个如何执行此操作的示例:
https://msdn.microsoft.com/en-US/library/dtkwfdky(v=vs.80).aspx