应用程序密码的完整性
本文关键字:完整性 密码 应用程序 | 更新日期: 2023-09-27 18:36:41
>有谁知道如何在文本文件中安全地存储密码。我在VS中有一个带有登录窗口的C#本地应用程序,我需要存储用户密码。我知道散列和加密,但问题是任何人都可以删除密码文件或更改其中的数据。有没有办法解决这个问题?我的攻击者模型是具有管理员权限的用户。
谢谢大家!我通过运行使文件保持打开状态的服务解决了这个问题,因此除非您关闭服务,否则您无法编辑或删除它。我认为这不是最好的解决方案,但它正在起作用。
正如其他人所说,这取决于您的威胁模型。如果本地存储的密码将用于验证任何内容,则需要对其进行加密,并将其存储在加密的数据库/文件中。
您是否在本地存储此密码以保存远程登录的用户密码?
或者您是否存储此密码以实际验证用户的登录数据?(一般来说,你不想这样做,因为正如其他人所说,你不能信任用户端的文件。
最好的解决方案是使用远程服务器来存储密码,并验证登录数据。
然而。。
没有一种适合所有安全模型的尺寸。这取决于您的需求、用户需求、您提供的服务类型,以及此应用程序所需的安全级别。(MSN 聊天帐户不需要与银行登录相同的安全性。
您最初的问题是如何防止用户编辑本地密码文件:
保存文件时需要加密文件。(也使用 sha256 对存储的密码进行哈希处理,使用盐)
然后在应用程序中解密密码文件(在内存中),然后从中读取密码哈希以在应用程序中使用。除此之外,您还可以远程存储文件/密码的解密密钥/盐。您的应用需要访问互联网才能获取密钥/盐,然后解密本地文件/密码。
更多阅读和代码参考:
在 C-Sharp 中加密文件
Sha256 在 C-夏普中用盐散列
在 C-Sharp 中使用远程 SQL 数据库
扩展Zaph注释:使用哈希。
通过良好的哈希函数 (SHA2) 运行用户密码并存储哈希。
当用户输入密码并且您想要检查它时,请通过相同的哈希函数运行他们的输入,看看您是否获得相同的哈希。
这是更安全的,因为您没有存储可以转换回密码并被盗的东西