Come comportarsi in modo anomalo su un server autorevole?

2

Il mio collega e io stiamo sviluppando un server autorevole per un MMO. Non possiamo essere d'accordo su come gestire i "cattivi comportamenti" dei clienti. In questo caso, comportarsi in modo anomalo significa clienti che inviano richieste "dispari" che potrebbero indicare un cliente compromesso / alterato o persino un utente malintenzionato che inserisce i dati direttamente nel flusso di comunicazione.

Uno di noi crede che la richiesta incriminata debba essere interrotta, i dati del cliente salvati e la connessione del client forzatamente chiusa ("uccisa"). L'altro ritiene che la richiesta debba essere interrotta e una risposta "non riuscita" restituita al client.

Siamo in un vicolo cieco perché non possiamo decidere quale sia l'approccio migliore. Abbiamo entrambi generato argomenti, ma nulla è stato sufficiente per influenzare nessuno di noi.

Per riferimento, ecco alcune cose che abbiamo considerato:

  • La disconnessione comporta un fastidio per gli utenti legittimi se commettiamo un errore nella codifica del "rilevamento errato"
  • L'uccisione del client elimina la necessità di "ripulire" il codice di risposta.
  • Se non uccidiamo il cliente, potremmo commettere un errore e continuare ad elaborare la richiesta errata.
  • L'uccisione del client impedisce a un client compromesso di inviare altre richieste potenzialmente pericolose, almeno fino al loro nuovo accesso.
  • Una disconnessione potrebbe non fare molto per scoraggiare gli imbroglioni, mentre una risposta di negazione potrebbe suscitare un sentimento di "fratello maggiore che sta guardando".

Qualche feedback sui nostri argomenti? Ci sono altri motivi per scegliere l'uno rispetto all'altro? Esiste uno standard di settore o addirittura un consenso sulle migliori pratiche?

    
posta Xcelled 04.08.2014 - 19:05
fonte

1 risposta

2
  • La disconnessione comporta un fastidio per gli utenti legittimi se commettiamo un errore nella codifica del "rilevamento errato"

Con una corretta revisione del codice, errori come questi possono essere evitati.

  • L'uccisione del client elimina la necessità di "ripulire" il codice di risposta.

Sebbene sia importante "uccidere" un client malintenzionato per prevenire ulteriori problemi, personalmente suggerirei di raccogliere tutte le informazioni sulla fonte dannosa prima di "uccidere" la connessione client.

  • Se non uccidiamo il cliente, potremmo commettere un errore e continuare ad elaborare la richiesta errata.

Senza evitare l'attività dannosa, rischi di ulteriore sfruttamento.

  • L'uccisione del client impedisce a un client compromesso di inviare altre richieste potenzialmente pericolose, almeno fino al loro nuovo accesso.

Ciò dipende in ultima analisi dall'architettura e dal design del gioco, ma senza conoscere molti dettagli sul MMO proposto, questa azione sarebbe sicuramente una mitigazione immediata ma è importante registrare la fonte dell'attacco ( data / ora / src IP / dst IP / porte / protocolli / tipo di attacco) per la risposta agli incidenti. Anche se gli attacchi informatici sono inevitabili, la raccolta dei dati di cui sopra può aiutarti a rilevare, contenere e sradicare eventuali ulteriori minacce.

    
risposta data 04.08.2014 - 22:45
fonte