【问题标题】:Simple account control system简单的账户控制系统
【发布时间】:2017-08-29 07:57:15
【问题描述】:

我的程序是一个 TCP 套接字服务器,它应该由一个命令应答系统通过网络进行管理。命令(请求)-应答系统不是问题:客户端发送数据包,服务器接收并生成响应。数据包只是一个字节序列。
问题是我必须创建一个简单的帐户系统。我的服务器应该存储和管理两种帐户类型:“管理员”和“简单用户”。因此我应该拥有这些东西:一个注册、身份验证和一个密码存储系统。如何在 Qt5 上简单地做到这一点?例如,我可以简单地通过网络发送用户名和密码(或密码哈希),但是如何以正常方式在服务器上初始创建管理员帐户?我没有严格的安全要求,但我想创建一个有意义的正常系统。

【问题讨论】:

  • 不确定 Qt 部分,但您打算如何跟踪会话?使用 HTTP 是一种选择吗?这将大大简化登录和会话处理。如果不是,我建议您查看其他会话实现(也许为经过身份验证的连接生成令牌......)。身份验证本身可以是nonce-based
  • 最简单的方法:管理员凭据应该通过服务器端的一些配置文件进行预定义。作为额外的保护,您可能会强制用户在首次登录时更改密码。另一种方式:许多 CMS 为首次登录的用户提供完全访问权限 + 安装步骤。顺便说一句,您的问题根本与 Qt 无关 :)
  • @DmitrySazonov 谢谢,好主意!您可以将其写为答案,我会接受)。这是本地网络中多台台式 PC 之间的系统。现在我要将系统设置为预定义的配置文件 + 强制管理员在首次登录时更改密码。但也许只是计算机上的一个配置文件就足够了。

标签: qt network-programming qt5 account qtcpsocket


【解决方案1】:

最简单的方法:管理员凭据应该通过服务器端的一些配置文件进行预定义。作为额外的保护,您可能会强制用户在首次登录时更改密码。另一种方式:许多 CMS 为首次登录的用户提供完全访问权限 + 安装步骤。

【讨论】:

    【解决方案2】:

    使用 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”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-19
    • 1970-01-01
    • 2013-09-25
    • 1970-01-01
    • 2011-03-04
    • 1970-01-01
    • 2014-11-12
    相关资源
    最近更新 更多