26

小さなサーバー クライアント プログラム用のログイン/認証システムを実装しています。私はこれをどのように行うべきか疑問に思っており、いつものように Stack Overflow から素晴らしいヒントやアドバイスを得たいと思っていました。これが私がそれをするだろうと想像する方法です。

  • クライアントがサーバーに接続します。
  • サーバーは「トークン」をクライアントに送信します(おそらく時間に基づいて)
  • クライアントは、トークンとともに、ユーザー名と sha1 で暗号化されたパスワードを返します。
  • サーバーはそれらを受け取り、サーバー側データベースの資格情報に対してユーザーを認証します。
  • これでトークンが検証され、ユーザーはトークンを使用してサインインします。

これはまったく安全な方法ですか?クライアントもシリアルキーなどを送信してシリアル/トークンペアを形成し、別のクライアントが同じトークンを偽造できないようにしました(トークンはサーバー側で生成されますが)。

私は実装を行うことができるので、実装の詳細は必要ありません。

私の質問は、むしろ2つの質問です。

  • ソケットを使用してログイン/認証システムを実現するにはどのような方法がありますか
  • クライアントからサーバーへの接続を保護する方法はありますか
  • 編集: これは C++ の質問であるため、尋ねるのを忘れていました。暗号化/認証を支援できるライブラリはありますか?

セキュリティは私にとって問題なので、確実に正しく行いたいと思っています。

たぶん、いくつかの背景情報。これはゲーム サーバーであり、ユーザーは自分のアカウントでログインすると、「ロビー」に移動し、そこで「ワールド サーバー」を選択してプレイすることができます。ワールド サーバーは、同じネットワーク内の別のマシンで (おそらく) 実行されている別のプロセスです。

そのため、これにはセッションの概念が必要です。ユーザーがログインしてセッションが生成され、ログインサーバーがユーザーが選択したワールドサーバーにセッションを中継し、ワールドサーバーがユーザーが実際にログインしました。

クライアントはワールドサーバーへのセッションを確認する必要があると思いますが、それについては後で心配します。

ジェシー_

4

2 に答える 2

0

セキュリティが大きな問題である場合は、自分でロールバックしないでください。セキュア ソケット ライブラリが必要です。OpenSSLのようなもの。

于 2012-07-20T14:13:53.730 に答える