2015-06-07 98 views
1

最近,我从我的一个客户面临着一个有趣的规定:.NET安全存储敏感数据

如果你有存储登录/密码在.config文件,它不能明文存储。此外,如果您想在.config文件中加密此数据,则无法在源代码中对加密密钥进行硬编码。

样品配置部分敏感数据:

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

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

什么是可能的解决方案,以fullfill这个要求?

+0

使用智能卡的USB记忆棒来存储私钥,锁在一个安全的坚持并希望最好的。您需要将密钥存储在可读的地方。 – Jens

回答

1

幸运的是,.NET已经为您提供了ProtectedConfiguration Provider的这个功能。这可以使用内置于窗口中的机器或用户级密钥容器来存储密钥信息。

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

+0

谢谢你,它有很大的帮助 – Macko