我目前正在开发一个简单的WinForms / C#应用程序,它以结构化和一致的方式存档数据。目标用户对归档文件夹没有写入权限,只能使用该应用程序进行写入。
由于用户不应获得其他权限,因此我需要为应用程序提供某些通用服务用户的凭据,以便开始用户模拟。因为用户不应该知道这些凭证,所以他们必须以某种方式存储(我更喜欢本地,因为我没有使用数据库和诸如此类的经验)。 有没有办法安全地存储凭证,而最终用户不必知道/做任何事情?或者还有另一种更好的解决方法吗?
我知道有关密码存储的问题很频繁,我已尽力找到我特定问题的答案,但我找到的所有线程都希望存储用户已知的密码。
答案 0 :(得分:2)
最安全的解决方案是实际创建一个服务,该服务在具有正确权限的用户下运行。然后,您的Winforms应用程序将使用紧密的服务接口来告诉它需要做什么。这有多可行取决于你究竟要做什么。
尝试使用winforms应用程序执行此操作非常棘手。如果用户应用程序可以做某事,那么用户也可以。请记住,没有“应用程序权限”这样的东西 - 只有用户权限。 GUI应用程序将作为某些用户运行,该用户可以执行应用程序可以执行的所有操作。
答案 1 :(得分:-1)
你可以散列下面的密码
using System.Security.Cryptography;
public static string EncodePasswordToBase64(string password)
{ byte[] bytes = Encoding.Unicode.GetBytes(password);
byte[] inArray = HashAlgorithm.Create("SHA1").ComputeHash(bytes);
return Convert.ToBase64String(inArray);
}