.NET Secure存储敏感数据

时间:2015-06-07 17:09:03

标签: .net security

最近我遇到了一位客户的有趣要求:

如果您必须将登录名/密码存储在.config文件中,则无法以明文形式存储。此外,如果您考虑在.config文件中加密此数据,则无法在源代码中对加密密钥进行硬编码。

包含敏感数据的示例配置部分:

    <configSections>
    <section name="PayUSettings" type="JobSystem.Payments.PayU.PayUSettings, JobSystem.Payments" />
  </configSections>

<PayUSettings PosId="265898" Login="xxx" Password="yyy" IsTestMode="False" />

满足此要求的可能解决方案是什么?

1 个答案:

答案 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