有谁知道如何在文本文件中安全地存储密码。我在VS中使用登录窗口在C#上有一个本地应用程序,我需要存储用户密码。我知道哈希和加密,但问题是任何人都可以删除密码文件或更改其中的数据。有什么方法可以解决这个问题吗?我的攻击者模型是具有管理员权限的用户。
谢谢大家!我通过运行保持文件打开的服务来解决问题,因此除非关闭服务,否则无法编辑或删除它。它不是我认为的最佳解决方案,但它正在发挥作用。
答案 0 :(得分:0)
正如其他人所说,这取决于你的威胁模型。如果本地存储的密码将用于验证ANYTHING,则需要加密,并存储在加密的数据库/文件中。
您是否在本地存储此密码以保存远程登录的用户密码?
或者您是否存储此密码以实际验证用户登录数据? (一般情况下,您不希望这样做,因为正如其他人所说,您不能信任用户方的文件。)
最佳解决方案是使用远程服务器存储密码,并验证登录数据。
然而..
没有一种尺寸适合所有安全模型。这取决于您的需求,用户需求,您提供的服务类型以及相应的应用程序所需的安全级别。 ( MSN聊天帐户不需要与银行登录相同的安全性。)
您的原始问题是如何阻止用户编辑本地密码文件:
保存时需要加密文件。 (也使用sha256散列存储的密码,使用盐)
然后在您的应用程序中解密密码文件(在内存中),然后从中读取密码哈希以在您的应用程序中使用。除此之外,您还可以远程存储文件/密码的解密密钥/盐。您的应用需要访问互联网才能获取密钥/盐,然后解密本地文件/密码。
更多阅读&代码参考:
答案 1 :(得分:0)
扩展zaph评论:使用哈希。
通过良好的哈希函数(SHA2)运行用户密码并存储哈希值。
当用户输入密码而你想检查它时,通过相同的哈希函数运行他们的输入,看看你是否得到相同的哈希值。
这样更安全,因为您没有存储可以转换回密码并被盗的东西