2017-03-17 45 views
0

问题:在开发多平台.NET Core 1.1应用程序时,保护数据的最佳方式是什么?多平台数据保护

让我解释一下我的意思:应用程序有一个包含数据库连接密码的配置文件。

我想以正确的方式做事,这意味着在第一次读取密码后,我更愿意在配置文件中加密字符串。显然,我需要使用某种对称加密和某种密码短语。在Windows中,我将使用DPAPI和主机身份来产生我的密码(,当然,它在中有点混淆)。

Linux没有DPAPI ...有没有达到我所描述什么真正方式?

在此先感谢!

编辑:实现代码库的优先级不依赖于环境/主机操作系统。

回答

2
  1. 所有敏感设置应配置文件
  2. 解密密钥应储存在环境变量中进行加密

然后应用程序应该解密上飞的设置,当它需要那些。

+1

我喜欢环境变量的方法。我需要一组代码来处理Linux和Windows的.net核心应用程序的环境变量吗? –

+0

@PhilP。 Environment.GetEnvironmentVariable()方法应该工作。 – Artak

2

我不认为在单一实施中,在每个平台上都有一种“真正的多平台”方式来调用本机操作系统级别的加密原语。我相信许多供应商必须根据具体情况针对操作系统的API。

CIA advice可能是很好的证据支持这一工作围绕“做了艰辛的道路”,并专门针对每一个平台,大概说来参与试图找到一个快捷方式的风险:

所有工具必须利用操作系统(OS)提供的密码原语,其中可以使用(例如,Microsoft CryptoAPI-NG,OpenSSL,PolarSSL,GnuTLS等)。