我的程序是一个TCP套接字服务器,它应该通过一个网络管理一个命令应答系统。命令(请求)-answer系统不是问题:客户端发送数据包,服务器接收数据包并生成响应。数据包只是一个字节序列。
问题是我必须建立一个简单的帐户系统。我的服务器应该存储和管理两种帐户类型:“管理员”和“简单用户”。因此,我应该拥有这样的东西:注册、身份验证和密码存储系统。如何简单地在Qt5上做到这一点?例如,我只需通过网络发送用户名和密码(或密码哈希),但是如何以正常的方式在服务器上创建管理员帐户呢?我没有严格的安全要求,但我想要创建一个正常的系统,这将是合理的。
发布于 2017-08-31 08:09:14
最简单的方法:管理员凭据应该通过服务器端的某个配置文件预定义。作为额外的保护,您可能会强迫用户在第一次登录时更改密码。另一种方式:许多CMS为第一次登录的用户提供了完整的访问和安装步骤。
发布于 2017-08-29 11:25:29
使用QSslSocket获取安全通信层(http://doc.qt.io/qt-5/qsslsocket.html),因为您将在此管理链接之上交换密码。
这里有一个代码的客户端部分的示例,使用Qt5:http://doc.qt.io/qt-5/qtnetwork-securesocketclient-example.html
在服务器端,接受用于服务的预定义未使用端口上的套接字。
现在,您可以简单地使用与管理员帐户相对应的随机秘密密码来决定登录,并创建一个程序在基于QSslSocket的安全通道上发送此密码。在接受远程管理之前,您的服务器必须检查密码。
因此,如您所见,必须在使用服务之前创建管理员。您可以使用基于某些加密方法(OpenPGP、S/MIME等)的私有邮件交换来向管理员提供其密码。
https://stackoverflow.com/questions/45933648
复制相似问题