2017-08-29 74 views
1

我的程序是一個TCP套接字服務器,它應該通過命令 - 應答系統在網絡上進行管理。命令(請求)-answer系統不是問題:客戶端發送數據包,服務器接收數據包並生成響應。數據包只是一個字節序列。
問題是我必須創建一個簡單的帳戶系統。我的服務器應該存儲和管理兩種賬戶類型:「管理員」和「簡單用戶」。所以我應該有這樣的東西:註冊,認證和密碼存儲系統。這可以簡單地在Qt5上完成?例如,我只能通過網絡發送用戶名和密碼(或密碼哈希),但是如何以正常方式在服務器上初始創建管理員帳戶?我沒有嚴格的安全要求,但我想創建一個合理的系統。簡單的賬戶控制系統

+0

不確定Qt部分,但您如何計劃跟蹤會話?正在使用HTTP一個選項?這將簡化登錄和會話處理。如果沒有,我會建議你看看其他會話實現(也許生成令牌認證連接...)。身份驗證本身可以是[基於nonce的](https://en.wikipedia.org/wiki/Challenge-response_authentication) – urban

+1

最簡單的方式:管理員憑證應通過服務器端的某個配置文件進行預定義。作爲額外的保護,您可能會強制用戶在首次登錄時更改密碼。另一種方式:許多CMS爲首次登錄的用戶提供完整訪問權限和安裝步驟。順便說一句,你的問題與Qt無關:) –

+0

@DmitrySazonov謝謝,非常好的主意!你可以寫這個答案,我會接受它)。這是本地網絡中幾臺臺式電腦之間的系統。現在,我要將系統作爲預定義的配置文件+強制管理員在首次登錄時更改密碼。但也許只是在電腦上的配置文件就足夠了。 –

回答

1

最簡單的方法:管理員憑證應通過服務器端的某個配置文件進行預定義。作爲額外的保護,您可能會強制用戶在首次登錄時更改密碼。另一種方式:許多CMS爲首次登錄的用戶提供完整訪問權限和安裝步驟。

-1

使用QSslSocket獲取安全通信層(http://doc.qt.io/qt-5/qsslsocket.html),因爲您將在此管理鏈接上交換密碼。

這裏有代碼的客戶端部分,與QT5的例子:http://doc.qt.io/qt-5/qtnetwork-securesocketclient-example.html

在服務器端,接受預定義的未使用的端口上的插座,竭誠爲您服務。

現在,您可以簡單地決定使用隨機祕密密碼進行的登錄,該密碼將對應於管理員帳戶,並創建一個程序在基於QSslSocket的安全通道上發送此密碼。在接受遠程管理之前,服務器必須檢查密碼。

因此,如您所見,必須在使用服務之前創建管理員。您可以使用基於某些加密手段(OpenPGP,S/MIME等)的私人郵件交換爲管理員提供密碼。

+1

沒有答案。 「如何創建管理員帳戶?」 - >「使用QSslSocket」。 –

+0

問題標籤是:qtcpsocket。問題後的通知是關於安全的:「[...]我沒有嚴格的安全要求,但我想創建一個合理的系統。」 =>我的回答是「使用QSslSocket」 –