gpt4 book ai didi

c# - 为登录服务器加密 TcpStream - 有必要吗?

转载 作者:太空宇宙 更新时间:2023-11-03 19:17:16 25 4
gpt4 key购买 nike

我正在编写一个需要安全登录的 C# .NET 应用程序。我已经具备使用哈希和盐在数据库中安全存储密码的必要功能,但是,我现在正从测试阶段转移。在开发之前(登录没有优先级)我只是直接连接到我的数据库。我知道这对于生产应用程序来说是不安全的,因为您公然将数据库凭据存储在代码中。相反,我选择创建一个简单的异步 TCP 套接字服务器来监听用户名,从数据库发回 salt,然后客户端对输入的密码进行哈希处理(salt 临时存储在本地)并将其发送回服务器。服务器然后检查它们是否匹配;如果用户 checkout ,则返回 true/false。

我已经做了一些研究并研究了对 TCP 连接的加密,但是,这真的有必要吗,因为密码已经被散列了?还是有更好的整体做事方式?我乐于接受关于客户端/服务器架构应该如何工作的建议。登录在整个应用程序中的作用并不那么重要,但它将是生产级的,我不想将设计不佳的应用程序放在那里。

最佳答案

then the client hashes the entered password (salt is stored locally temporarily) and sends that back to the server. The server then checks if they match; sends back true/false if the user checks out.

I've done some research and looked into encrypting the TCP Connection, however, is this really necessary, since the password will already be hashed?

所谓的“密码”并不重要,唯一重要的是服务器 将接受什么作为有效凭据。如果您输入密码并且服务器在那里对其进行哈希处理(正如@Christian Stewart 在评论中建议的那样),那么您的密码就是您的凭据。如果您自己对密码进行加盐和哈希处理,并将结果发送到服务器,那么<​​strong>此结果 将成为您的凭据。拦截它与拦截原始密码+盐一样好。

所以,是的,在通过它发送凭据之前,您还必须加密您的连接。 SslStream Class ,似乎是最简单的方法(检查底部的示例代码,包括服务器和客户端),它支持服务器身份验证和可选的客户端身份验证(以防您还想限制哪些机器将拥有访问登录服务器)。

关于c# - 为登录服务器加密 TcpStream - 有必要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15304597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com