J'ai écrit un jeu qui stocke des informations de scores élevées sur un serveur FTP. Dans le code source, je dois écrire le lien FTP avec le nom de compte et le mot de passe.
Par exemple:
url = new URL("ftp://name:[email protected]/");
C'est Java, BTW. Dans les chaînes de fichier de classe sont préservées, car elles sont écrites dans le code source. Donc, si quelqu'un a pu lire le fichier de classe, il pourrait trouver cette chaîne, nom FTP: // Nom: [email protected]/ , avec le nom d'utilisateur et le mot de passe à la vue de la vue comme une légère monte dans un fichier de classe quand même.
Quel serait un moyen approprié de sécuriser le nom d'utilisateur et le mot de passe?
Edit :
J'ai fait une classe de cryptage dans Java et remplacé le nom et le mot de passe avec des appels sur le crypter avec un nom d'utilisateur et un mot de passe crypté par exemple:
url = new URL("ftp://Crypter.crypt("q345uih34",3)+:+Crypter.crypt("nfk3iugr29o8",-2)[email protected]/");
Cela serait-il suffisant? Et je n'étais pas sûr si l'obfuscation était la meilleure solution cependant.
Il existe un certain nombre de vecteurs d'attaque dans ce scénario, il suffit donc de cacher le mot de passe ne vous aidera pas:
Cela compte donc pas vraiment comment et où vous cachez votre mot de passe FTP.
La seule bonne solution consiste à avoir un serveur qui effectue le calcul de haut niveau (et même de cette façon a le problème des robots). Vous devez au moins utiliser un protocole prenant en charge le cryptage (HTTPS, SFTP, FTPS). Vous devez vous assurer que quelqu'un qui apprend les informations d'identification ne peut pas détruire les données de pointage élevées des autres utilisateurs. Cela peut être fait par des autorisations serrées qui n'autorisent que la création de nouveaux fichiers dans le serveur FTPS/SFTP ou à l'aide d'une application Web qui accepte les données et stockez-la elles-mêmes.
FTP est probablement le mauvais moyen d'y aller. C'est un protocole de texte clair afin que toute personne avec un renifleur puisse intercepter la demande d'authentification et extraire les informations d'identification, peu importe combien vous les obtenez dans le programme.
Pourquoi ne pouvez-vous pas simplement envoyer des paires de clé/valeur sur votre serveur en tant que demande $ post avec une sorte d'authentification pour vous assurer qu'elle n'est pas manipulée?