Maison >base de données >tutoriel mysql >Comment sécuriser les informations d'identification MySQL dans le code Java contre la décompilation ?
Comment protéger le nom d'utilisateur et le mot de passe MySQL de la décompilation
Problème :
Java .class les fichiers peuvent être décompilés sans effort. Comment peut-on protéger une base de données s'il doit utiliser des informations de connexion dans le code ?
Réponse :
Ne jamais coder en dur les mots de passe dans le code. Cela a été récemment souligné dans le « Top 25 des erreurs de programmation les plus dangereuses » :
« Codage en dur d'un compte secret et d'un mot de passe dans votre logiciel est exceptionnellement pratique, pour les ingénieurs inverseurs qualifiés. Si le mot de passe est cohérent dans l'ensemble de votre logiciel , chaque client devient vulnérable lorsque ce mot de passe est inévitablement connu. De plus, étant codé en dur, il constitue un inconvénient important à résoudre. "
Les informations de configuration, y compris les mots de passe, doivent être stockées dans. un fichier séparé que l'application lit lors de l'initialisation. C'est la seule véritable méthode pour empêcher la fuite du mot de passe due à la décompilation (ne le compilez jamais en binaire en premier lieu).
Solution :
Pour Java , une solution simple consiste à utiliser la classe Preferences, conçue pour stocker divers paramètres du programme, notamment les noms d'utilisateur et les mots de passe.
import java.util.prefs.Preferences; public class DemoApplication { Preferences preferences = Preferences.userNodeForPackage(DemoApplication.class); public void setCredentials(String username, String password) { preferences.put("db_username", username); preferences.put("db_password", password); } public String getUsername() { return preferences.get("db_username", null); } public String getPassword() { return preferences.get("db_password", null); } // your code here }
Dans ce code, la méthode setCredentials définit le nom d'utilisateur et le mot de passe après avoir affiché une boîte de dialogue de saisie. Lors de la connexion à la base de données, les méthodes getUsername et getPassword récupèrent les valeurs stockées. Les informations d'identification ne sont pas codées en dur dans les binaires, ce qui atténue le risque de sécurité posé par la décompilation.
Remarques importantes :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!