Maison  >  Article  >  Java  >  Comment SpringBoot chiffre le mot de passe du compte SQL du fichier de configuration

Comment SpringBoot chiffre le mot de passe du compte SQL du fichier de configuration

PHPz
PHPzavant
2023-05-22 20:50:051256parcourir

1. Introduisez des dépendances dans le projet Maven

<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>2.1.0</version>
</dependency>

2 En même temps, vous devez configurer le mot de passe dans le fichier de configuration application.yml

car. l'outil utilise ce mot de passe crypté ou déchiffré, vous devez donc vous assurer que la chaîne cryptée dans la configuration est cryptée avec le même mot de passe, sinon elle ne sera pas déchiffrée au démarrage du projet.

jasypt:
    encryptor:
        password: 123456

3. Vous pouvez crypter les informations originales dans le scénario de test

. La démo simple est la suivante :

@RunWith(SpringRunner.class)
@SpringBootTest
@WebAppConfiguration
public class Test {
    @Autowired
    StringEncryptor encryptor;
 
    @Test
    public void getPass() {
        #直接调用加密的方法
        String mysql = encryptor.encrypt("mysql-username|mysql-password");
    }
}

4 Enfin, mettez simplement la chaîne cryptée dans le fichier de configuration

comme la chaîne "mysql" ci-dessus

url: ENC(mysql==)
username: ENC(mysql==)
password: ENC(mysql=)
. # 🎜🎜#Notez que ENC() est une méthode d'écriture fixe et mysql== est votre chaîne correspondante cryptée.

De cette façon, vous pouvez faire semblant de crypter des informations sensibles, hahaha, pourquoi je dis faire semblant. De nombreuses personnes peuvent être déconcertées par ce problème, car le mot de passe crypté est stocké dans le fichier de configuration en texte clair et peut être facilement déchiffré par n'importe qui.

Oui, c'est bien le cas. On peut dire que ce type de méthode de cryptage ne permet pas aux utilisateurs de voir le mot de passe du compte en même temps.

Même si les données sont cryptées, cela n'a aucun sens une fois que le pirate informatique a obtenu l'accès à votre projet, car le cryptage n'est qu'une fausse mesure de sécurité. Il est donc le plus fondamental et le plus important d’assurer la sécurité des projets et des serveurs.

OK!OK!OK!

Crypter le fichier de configuration

Tous les étudiants en développement le savent, comme les informations sur les dépendances du projet et les informations sur la base de données. enregistré dans le fichier de configuration et est en texte clair, il doit donc être chiffré. Aujourd'hui, je vais présenter la configuration de jasypt intégrée au chiffrement Springboot.

Tout d'abord, tout cela est basé sur le principe que votre projet Springboot peut fonctionner normalement.

Première étape : Ajoutez des dépendances au fichier pom, comme indiqué sur l'image

Une version est fournie ici

<dependency>
   <groupId>com.github.ulisesbocchio</groupId>
   <artifactId>jasypt-spring-boot-starter</artifactId>
   <version>2.1.0</version>
</dependency>

# 🎜🎜##🎜 🎜#Étape 2 : Générer la cléComment SpringBoot chiffre le mot de passe du compte SQL du fichier de configuration

Trouvez le package jar jasypt dans votre entrepôt maven local et ouvrez la fenêtre de commande cmd dans ce répertoire, comme indiqué dans l'image : #🎜🎜 #

#🎜 🎜#

execute

Comment SpringBoot chiffre le mot de passe du compte SQL du fichier de configuration

java -cp jasypt-1.9.2.jar org.jasypt.intf. cli.JasyptPBESringEncryptionCLI input="test " password=test

algorithm=PBEWithMD5AndDES

où l'entrée est votre mot de passe en texte brut, ici je démontre le test, le mot de passe est votre clé privée, l'algorithme c'est une règle, ne la changez pas ! ! ! . Après exécution, cela ressemble à ceci :

Pour expliquer brièvement, la SORTIE ici est le texte chiffré (mot de passe). Voici comment copier du texte en utilisant cmd (car je ne savais pas comment copier en utilisant cmd au début) : Cliquez avec le bouton droit de la souris pour marquer et sélectionner le contenu que vous souhaitez copier, vous pourrez ensuite le copier.

Étape 3 : Ajoutez la configuration au fichier de configuration Springboot, comme indiqué dans la figureComment SpringBoot chiffre le mot de passe du compte SQL du fichier de configuration

Ici, j'utilise l'application. yml , le fichier application.properties s'écrit comme ceci : jasypt.encryptor.password=test.

Mais ce qui est réellement utilisé, c'est System.setProperty("jasypt.encryptor.password", "demo"); dans la classe de démarrage pour réaffecter les valeurs entre ce nœud, ce qui aidera à protéger le privé (Si quelqu'un a une meilleure solution, veuillez laisser un message à temps et discutons-en ensemble.) Comment SpringBoot chiffre le mot de passe du compte SQL du fichier de configuration

Remarque : le premier mot de passe dans l'image ci-dessus correspond au mot de passe dans ARGUMENTS dans la deuxième étape, le deuxième mot de passe correspond au résultat dans OUTPUT dans la deuxième étape, et le formulaire doit être ajouté avec ENC (votre mot de passe), comme le montre la figure.

Étape 4 : Décrypter le mot de passe via la commande Comment SpringBoot chiffre le mot de passe du compte SQL du fichier de configuration

Exécuter la commande

java -cp jasypt-1.9.2.jar org. jasypt.intf.cli.JasyptPBESTringDecryptionCLI input="nhyL4CzSQv/aPxoe7TzpOQ==" password=test algorithm=PBEWithMD5AndDES

Le résultat est le suivant :
#🎜🎜 ##🎜🎜 #

Au final, l'intégration de springboot et jasypt est terminée Cela semble assez simple à mettre en œuvre, haha. Mais une chose à noter est que vous ne devez pas divulguer votre fichier de configuration (en particulier le mot de passe dans ARGUMENTS, qui est équivalent à la clé privée), sinon d'autres pourraient décrypter votre mot de passe via la quatrième étape. Il est recommandé de mettre le fichier de configuration dans. Centre de configuration

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer