我正在编写一个需要安全登录的 C# .NET 应用程序。我已经拥有了在数据库中使用哈希和盐安全存储密码的必要功能,但是,我现在正从测试阶段开始。在开发之前(登录没有优先级),我只是直接连接到我的数据库。我知道这对于生产应用程序来说是不安全的,因为您公然将数据库凭据存储在代码中。相反,我选择创建一个简单的异步 TCP 套接字服务器,它侦听用户名,从数据库发送回 salt,然后客户端对输入的密码进行哈希处理(salt 临时存储在本地)并将其发送回服务器。然后服务器检查它们是否匹配;如果用户签出,则返回 true/false。
我已经进行了一些研究并研究了加密 TCP 连接,但是,这真的有必要吗,因为密码已经被散列了?还是有更好的整体做事方式?我愿意接受有关客户端/服务器架构应该如何工作的建议。登录在整个应用程序中并没有扮演那么重要的角色,但它将是生产级的,我不想把设计不佳的应用程序放在那里。