Heim > Java > javaLernprogramm > Hauptteil

Wie gehe ich sicher mit Passwörtern im Quellcode um?

Susan Sarandon
Freigeben: 2024-11-16 16:57:03
Original
170 Leute haben es durchsucht

How to Securely Handle Passwords in Source Code?

Sicherer Umgang mit Passwörtern im Quellcode

Im Kontext des Zugriffs auf eine RESTful-API mithilfe der Basisauthentifizierung ist das Speichern des Benutzernamens und des Passworts im Klartext erforderlich ein Sicherheitsrisiko. Um die Sicherheit zu erhöhen, beachten Sie die folgenden Empfehlungen:

1. Konvertieren Sie Passwörter in Zeichen-Arrays

Ersetzen Sie das Klartext-Passwort durch ein Zeichen-Array. Dies verhindert die Verwendung von String-Objekten, die Daten behalten, nachdem sie auf Null gesetzt wurden.

2. Anmeldeinformationen verschlüsseln und vorübergehend entschlüsseln

Verschlüsseln Sie die Anmeldeinformationen mit einem Algorithmus wie Triple Data Encryption Standard (3DES), bevor Sie sie speichern. Entschlüsseln Sie sie nur während des Authentifizierungsprozesses.

3. Anmeldeinformationen extern speichern

Vermeiden Sie die harte Codierung von Anmeldeinformationen. Speichern Sie sie stattdessen an einem zentralen Ort, beispielsweise in einer Konfigurationsdatei oder Datenbank. Verschlüsseln Sie sie, bevor Sie die Datei speichern, und wenden Sie optional eine weitere Verschlüsselungsebene auf die Datei selbst an.

4. Übertragung schützen

Verwenden Sie Transport Layer Security (TLS) oder Secure Sockets Layer (SSL), um den Übertragungsprozess zu sichern.

5. Code verschleiern

Wenden Sie Verschleierungstechniken auf Ihren kompilierten Code an, um sensible Daten zu verbergen.

Beispiel für Passwortverschlüsselung und -entschlüsselung:

Das Folgende Das Codebeispiel demonstriert den oben beschriebenen ersten und zweiten Schritt:

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);
    }
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie gehe ich sicher mit Passwörtern im Quellcode um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage