[C++] Autenticazione da client a server in C ++ tramite socket



Answers

Se la sicurezza è un grosso problema per te, non eseguire il rollover. Vuoi una libreria di socket sicura. Qualcosa come OpenSSL .

Question

Sto implementando un sistema di login / autenticazione per il mio piccolo programma client-server. Mi chiedo come fare, e speravo di ottenere alcuni ottimi consigli / consigli da come sempre. Questo è come immagino lo farò.

  • Il client si connette al server.
  • Il server invia un "token" al client (in base al tempo probabilmente e qualsiasi altra cosa)
  • Il client restituisce il nome utente e una password crittografata con sha1, insieme al token.
  • Il server li riceve e autentica l'utente con le credenziali nel database lato server.
  • Il token è ora verificato e l'utente ha effettuato l'accesso con il token.

È assolutamente un modo sicuro per farlo? Ho calcolato che il client invia anche una chiave seriale o qualcosa di simile per formare una coppia seriale / token, in modo che un altro client non possa simulare lo stesso token (sebbene il token sia generato dal lato server).

I dettagli di implementazione non sono richiesti, poiché sono in grado di eseguire l'implementazione.

La mia domanda sarebbe, piuttosto, due domande:

  • Quali sono i modi per ottenere un sistema di login / autenticazione con socket
  • Quali sono i modi per proteggere la mia connessione client-server
  • EDIT : ho dimenticato di chiedere, in quanto questa è una domanda C ++, ci sono librerie che possono aiutare nella crittografia / autenticazione?

La sicurezza è un problema per me, quindi voglio essere sicuro di farlo bene.

Forse alcune informazioni di base. È un server di gioco, una persona accede con il suo account e viene portata in una "Lobby", dove può scegliere un "World Server" su cui giocare. Il server mondiale è un processo separato in esecuzione (eventualmente) su una macchina diversa nella stessa rete.

Per questo motivo, voglio avere un concetto di sessione in questo, l'utente accede e viene generata una sessione, il server di login inoltra la sessione al server mondiale selezionato dall'utente, in modo che il server mondiale sappia che l'utente è effettivamente connesso.

Suppongo che il cliente dovrà confermare la sessione al server mondiale e tutto il resto, ma di questo mi preoccuperò più tardi.

Cordialmente, Jesse




Links