Maison > Java > javaDidacticiel > Comment gérer en toute sécurité les mots de passe dans le code source ?

Comment gérer en toute sécurité les mots de passe dans le code source ?

Susan Sarandon
Libérer: 2024-11-16 16:57:03
original
237 Les gens l'ont consulté

How to Securely Handle Passwords in Source Code?

Gestion sécurisée des mots de passe dans le code source

Dans le contexte de l'accès à une API RESTful à l'aide de l'authentification de base, le stockage du nom d'utilisateur et du mot de passe en texte brut est un risque pour la sécurité. Pour améliorer la sécurité, tenez compte des recommandations suivantes :

1. Convertir les mots de passe en tableaux de caractères

Remplacez le mot de passe en texte brut par un tableau de caractères. Cela empêche l'utilisation d'objets String, qui conservent les données après avoir été définis sur null.

2. Chiffrer les informations d'identification et décrypter temporairement

Cryptez les informations d'identification avec un algorithme tel que Triple Data Encryption Standard (3DES) avant de les stocker. Décryptez-les uniquement pendant le processus d'authentification.

3. Stocker les informations d'identification en externe

Évitez de coder en dur les informations d'identification. Au lieu de cela, stockez-les dans un emplacement centralisé, tel qu'un fichier de configuration ou une base de données. Chiffrez-les avant d'enregistrer le fichier et appliquez éventuellement une autre couche de cryptage au fichier lui-même.

4. Protégez la transmission

Utilisez Transport Layer Security (TLS) ou Secure Sockets Layer (SSL) pour sécuriser le processus de transmission.

5. Obscurcir le code

Appliquez des techniques d'obscurcissement à votre code compilé pour dissimuler les données sensibles.

Exemple de cryptage et de déchiffrement de mot de passe :

Ce qui suit L'exemple de code illustre les première et deuxième étapes décrites ci-dessus :

import java.util.Arrays;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.PBEParameterSpec;

public class PasswordEncryptionExample {
    private static final char[] PASSWORD = "Unauthorized_Personel_Is_Unauthorized".toCharArray();
    private static final byte[] SALT = {
            (byte) 0xde, (byte) 0x33, (byte) 0x10, (byte) 0x12,
            (byte) 0xde, (byte) 0x33, (byte) 0x10, (byte) 0x12
    };

    public static void main(String[] args) throws Exception {
        String password = "LetMePass_Word";
        char[] passwordArray = password.toCharArray();
        
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("PBEWithMD5AndDES");
        SecretKey key = keyFactory.generateSecret(new PBEKeySpec(PASSWORD));
        Cipher pbeCipher = Cipher.getInstance("PBEWithMD5AndDES");
        pbeCipher.init(Cipher.ENCRYPT_MODE, key, new PBEParameterSpec(SALT, 20));

        byte[] encryptedPassword = pbeCipher.doFinal(passwordArray);
        
        // Cleanup password data sources
        Arrays.fill(passwordArray, (char) 0);
        Arrays.fill(encryptedPassword, (byte) 0);
        
        // Decrypt the encrypted password
        pbeCipher.init(Cipher.DECRYPT_MODE, key, new PBEParameterSpec(SALT, 20));
        byte[] decryptedPassword = pbeCipher.doFinal(encryptedPassword);
        
        String decryptedPasswordString = new String(decryptedPassword);
        System.out.println("Decrypted password: " + decryptedPasswordString);
    }
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal