【发布时间】:2010-04-15 00:55:47
【问题描述】:
我有一个登录表单,其中包含用户名和密码作为用户的输入,我想从文本文件中验证这些登录凭据。我该怎么做?我知道如何写入数据和读取数据..但是如何只读取特定数据.或者检查用户名密码组合是否存在。
【问题讨论】:
标签: c# validation text-files
我有一个登录表单,其中包含用户名和密码作为用户的输入,我想从文本文件中验证这些登录凭据。我该怎么做?我知道如何写入数据和读取数据..但是如何只读取特定数据.或者检查用户名密码组合是否存在。
【问题讨论】:
标签: c# validation text-files
你有什么理由必须使用纯文本文件吗?正如 Joshua 所说,这是一种存储安全信息的糟糕方式。
在 .NET 中,标准方法是使用应用程序配置文件来存储用户名/密码(例如 app.config 或 web.config)并使用 Data Protectction API (DPAPI) 或 System.Security 对密码进行加密。 Cryptography.ProtectedData 类。
Jon Galloway 提供了一个decent tutorial 说明如何执行此操作。
【讨论】:
跳过将密码存储在文本文件中的不良做法(尤其是在未加密的情况下),您需要想出某种文件格式。
一个非常基本的文件可能就像你读取的一个 ini 文件:
[users]
username1=password1
username2=password2
您的算法将查找[users] 标头,然后读取每一行,在等号处拆分行并比较信息并继续读取,直到找到匹配项、文件末尾或可能的另一个部分。
我不确定您之前是否曾使用过用户身份验证,但将密码以纯文本形式存储被认为是一种不好的做法,因为如果密码被泄露会引发严重的安全问题。您通常希望使用单向散列(如 SHA-1 或 SHA-256)来散列用户密码(可能使用已知的盐)并将其发送到您的应用程序并存储它。这样,即使您以某种方式受到威胁,您也永远不会知道实际密码。
【讨论】: