私のプログラムはTCPソケットサーバーであり、コマンド応答システムによってネットワーク経由で管理する必要があります。コマンド(要求) - システムは問題ではありません。クライアントはパケットを送信し、サーバーはそれを受信して応答を生成します。パケットは単なる一連のバイトです。
問題は単純なアカウントシステムを作成する必要があることです。私のサーバーは、「管理者」と「シンプルユーザー」の2つのアカウントタイプを保存して管理する必要があります。したがって、私は物事を持っている必要があります:登録、認証とパスワード記憶システム。これはQt5でどうやってできるのですか?たとえば、ネットワーク上でユーザー名とパスワード(またはパスワードハッシュ)を送信するだけで、管理者アカウントを最初にサーバー上で通常の方法で作成する方法はありますか?私は厳しいセキュリティ要件を持っていませんが、理にかなった通常のシステムを作りたいと思います。単純なアカウント制御システム
答えて
最も単純な方法:管理者の資格情報は、サーバー側の設定ファイルによって事前に定義する必要があります。追加の保護として、ユーザーは最初にログインしたときにパスワードを変更することがあります。もう1つの方法:多くの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でした。 「[...]?私は厳しいセキュリティ要件を持っていませんが、理にかなった通常のシステムを作りたいと思っています。 =>私の答えは "Use QSslSocket" –
- 1. 単純なフィードバック制御リソース/例
- 2. 私の単純なカーネルスムージングコードでスムージングの程度を制御
- 3. MySQLの単純な評価システム
- 4. ルールベースのアクセス制御の単純な汎用実装がありますか?
- 5. 型付き階層型アクセス制御システム
- 6. adminとsuper_adminのロールベースアクセス制御システム
- 7. 最も単純な私は、ソースコード管理システムに設定するシステム
- 8. 最適化 - 制限と単純な制約
- 9. ListViewの単一行を制御する
- 10. 単純制約の追加 - データベース
- 11. この単純なユーザー制御コードはVS2015をクラッシュさせます。理由は分かりません
- 12. 単純なバイトコードトランスレータ
- 13. 単純なアニメーション
- 14. 単純なグラジエントブースティングアルゴリズム
- 15. 単純なアプリケーションクラッシュ
- 16. 単純なロックレスストップウォッチ
- 17. 単純なルーティングエラー
- 18. 単純なワードスクランブラ
- 19. 単純なコード
- 20. 単純なクエリ
- 21. 単純なモーダルオープンオンロード
- 22. 単純なファイアウォールプログラム
- 23. 単純なオンラインデータベース
- 24. 単純なログインページ
- 25. 単純なハスケルループ
- 26. 単純なドロップダウンリスト
- 27. 単純なラベールクエリ
- 28. 単純なエンティティリレーションシップエラー
- 29. 単純なログインフォーム
- 30. 単純なコンポーネント
Qtの部分についてはわかりませんが、どのようにセッションを追跡する予定ですか? HTTPを使用していますか?これにより、ログインとセッションの処理が簡単になります。そうでない場合は、他のセッションの実装を調べることをお勧めします(多分、認証された接続のトークンを生成する...)。認証自体は[nonce-based](https://en.wikipedia.org/wiki/Challenge-response_authentication)です。 – urban
簡単な方法:管理者の資格情報は、サーバー側の設定ファイルによって事前に定義する必要があります。追加の保護として、ユーザーは最初にログインしたときにパスワードを変更することがあります。もう1つの方法:多くのCMSは最初にログオンしたユーザーに完全なアクセス+インストール手順を提供します。 Btw、あなたの質問はQtとは全く関係ありません:) –
@DmitrySazonovありがとう、とても良いアイデア!あなたはこれを答えとして書くことができ、私はそれを受け入れます)。これは、ローカルネットワーク内のいくつかのデスクトップPC間のシステムです。今度は、システムをあらかじめ定義された設定ファイル+強制的に管理者にして、最初のログイン時にパスワードを変更します。しかし、おそらくコンピュータ上の設定ファイルで十分でしょう。 –