繁体   English   中英

为用户模拟存储密码

[英]Storing a password for user impersonation

我目前正在开发一个简单的 WinForms/C# 应用程序,它以结构化和一致的方式归档数据。 目标用户没有存档文件夹的写访问权限,只能使用该应用程序进行写入。

由于用户不应获得其他权限,因此我需要向应用程序提供某些通用服务用户的凭据,以便开始模拟用户。 因为用户不应该知道这些凭据,所以它们必须以某种方式存储(我更喜欢本地,因为我没有使用数据库等的经验)。 有没有什么方法可以安全地存储凭证而最终用户不必知道/做任何事情? 或者还有其他更好的方法来解决这个问题吗?

我知道有关密码存储的问题很常见,我已尽最大努力寻找我的特定问题的答案,但我能找到的所有线程都希望存储用户已知的密码。

最安全的解决方案是实际创建一个服务,该服务在具有正确权限的用户下运行。 然后,您的 Winforms 应用程序将只使用与服务的紧密接口来告诉它需要做什么。 这有多可行取决于您究竟要做什么。

尝试仅使用 winforms 应用程序来执行此操作是很棘手的。 如果用户应用程序可以做某事,那么用户也可以。 请记住,没有“应用程序权限”之类的东西——只有用户权限。 GUI 应用程序将作为某个用户运行,该用户可以执行应用程序可以执行的所有操作。

你可以像下面这样散列密码

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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM