Bonjour,
je développe actuellement un serveur multi-thread utilisant les sockets tcp pour un client mmorpg.
Une fois un client connecté, il envoi plusieurs nombres qui déterminent les réponses du serveur ( envoi moi les caractéristiques de mon personnage, envoi un message à ce joueur, ... ).
Cependant il y a une énorme faille en utilisant se système :
rien ne garantit que le client connecté est un client programmé par nos soins, il se peut très bien que ce soit simplement un programme java qui envoie des nombres/strings sur une socket ( et donc pourrait déclencher des actions sans conditions : rajout d'objet, changement de l'emplacement de personnage, ... )
Il y a tout de même un peu de protection car avant de pouvoir faire quoi que se soit il faut envoyer la version du client et la somme MD5 des fichiers présents dans le client.
Mais à mes yeux rien de très compliqué surtout sachant que les .class du client peuvent être lu ( même si j'utilise l'obfuscator proguard ) donc l'action de sécurisation peut être facilement simulé.
J'aimerais savoir comment sécuriser le serveur d'une meilleur façon ou alors comment font les grandes compagnies tel que Blizzard, NCSoft , ... pour sécuriser leurs serveurs de jeu?
J'espère avoir était clair ( et ne pas m'être trompé d'endroit où poster ).
Merci.
Partager