我的程序是一个TCP套接字服务器,它应该通过命令 - 应答系统在网络上进行管理。命令(请求)-answer系统不是问题:客户端发送数据包,服务器接收数据包并生成响应。数据包只是一个字节序列。
问题是我必须创建一个简单的帐户系统。我的服务器应该存储和管理两种账户类型:“管理员”和“简单用户”。所以我应该有这样的东西:注册,认证和密码存储系统。这可以简单地在Qt5上完成?例如,我只能通过网络发送用户名和密码(或密码哈希),但是如何以正常方式在服务器上初始创建管理员帐户?我没有严格的安全要求,但我想创建一个合理的系统。简单的账户控制系统
回答
最简单的方法:管理员凭证应通过服务器端的某个配置文件进行预定义。作为额外的保护,您可能会强制用户在首次登录时更改密码。另一种方式:许多CMS为首次登录的用户提供完整访问权限和安装步骤。
使用QSslSocket获取安全通信层(http://doc.qt.io/qt-5/qsslsocket.html),因为您将在此管理链接上交换密码。
这里有代码的客户端部分,与QT5的例子:http://doc.qt.io/qt-5/qtnetwork-securesocketclient-example.html
在服务器端,接受预定义的未使用的端口上的插座,竭诚为您服务。
现在,您可以简单地决定使用随机秘密密码进行的登录,该密码将对应于管理员帐户,并创建一个程序在基于QSslSocket的安全通道上发送此密码。在接受远程管理之前,服务器必须检查密码。
因此,如您所见,必须在使用服务之前创建管理员。您可以使用基于某些加密手段(OpenPGP,S/MIME等)的私人邮件交换为管理员提供密码。
没有答案。 “如何创建管理员帐户?” - >“使用QSslSocket”。 –
问题标签是:qtcpsocket。问题后的通知是关于安全的:“[...]我没有严格的安全要求,但我想创建一个合理的系统。” =>我的回答是“使用QSslSocket” –
- 1. 开源账单系统
- 2. 简单的版本控制系统或版本控制文件系统或版本控制数据库
- 3. KeyStone JS账户控制器
- 4. 简单的订购系统
- 5. 简单的评分系统
- 6. AngularJs:简单的系统
- 7. 简单的推荐系统
- 8. 简单的寻呼系统
- 9. java简单的银行账户程序
- 10. 账单/发票注册系统
- 11. 源控制系统
- 12. 统一的简单得分系统
- 13. 简单,体积最小PHP账户体系
- 14. Pygame简单评分系统
- 15. 简单等级系统
- 16. PHP账户体系
- 17. Asp.Net Mvc账户控制器JSon和View?
- 18. MVC3 Moq账户控制器c#nUnit
- 19. 为一个简单的网站选择一个版本控制系统
- 20. Akka演员系统控制
- 21. iOS粒子系统控制
- 22. 版本控制系统c#
- 23. iOS系统音量控制
- 24. 使用多个版本控制系统的多个项目的单一版本控制系统
- 25. 测试系统DSN的简单方法?
- 26. 简单的骨骼Javascript系统
- 27. 用简单的“事件”系统
- 28. 简单的虚拟文件系统
- 29. 简单的洪流系统在PHP中?
- 30. 简单的python插件系统
不确定Qt部分,但您如何计划跟踪会话?正在使用HTTP一个选项?这将简化登录和会话处理。如果没有,我会建议你看看其他会话实现(也许生成令牌认证连接...)。身份验证本身可以是[基于nonce的](https://en.wikipedia.org/wiki/Challenge-response_authentication) – urban
最简单的方式:管理员凭证应通过服务器端的某个配置文件进行预定义。作为额外的保护,您可能会强制用户在首次登录时更改密码。另一种方式:许多CMS为首次登录的用户提供完整访问权限和安装步骤。顺便说一句,你的问题与Qt无关:) –
@DmitrySazonov谢谢,非常好的主意!你可以写这个答案,我会接受它)。这是本地网络中几台台式电脑之间的系统。现在,我要将系统作为预定义的配置文件+强制管理员在首次登录时更改密码。但也许只是在电脑上的配置文件就足够了。 –