我目前使用首选项来保存我在应用程序中重复使用的所有其他数据。那么,当涉及到 SSH 凭据时,主机/端口/用户名可以以纯文本形式存储,但密码怎么办?
Preferences.Default.Set("hostname", entryHostname.Text);
Preferences.Default.Set("port", int.Parse(entryPort.Text));
Preferences.Default.Set("username", entryUsername.Text);
可以加密并存储为string或byte数组吗?
也许序列化一个 ConnectionInfo 对象并将其保存为 .json 文件?
还有哪些其他选择?其他应用程序如何以安全的方式存储凭据?
没有 100% 安全的方法可以在本地存储重要凭据而不存在被泄露的风险。即使您尝试加密这些值,只要它是在应用程序中完成并且是应用程序代码的一部分,它也不是完全安全的。您可以尝试将重要数据存储在云端,并将它们临时加载到内存中以供使用,但这种可能性取决于您的应用程序的上下文。
此外,操作系统也很重要。在 Android 和 iOS 中,使用应用程序或外部工具提取应用程序保存的数据通常比较困难。