ソースコード内のパスワードを安全に処理するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-16 16:57:03
オリジナル
170 人が閲覧しました

How to Securely Handle Passwords in Source Code?

ソース コードでパスワードを安全に処理する

基本認証を使用して RESTful API にアクセスするコンテキストでは、ユーザー名とパスワードを平文で保存することは危険です。セキュリティリスク。セキュリティを強化するには、次の推奨事項を考慮してください。

1.パスワードを文字配列に変換

プレーン テキストのパスワードを文字配列に置き換えます。これにより、null に設定された後もデータを保持する String オブジェクトの使用が防止されます。

2.認証情報を暗号化して一時的に復号化する

認証情報を保存する前に、Triple Data Encryption Standard (3DES) などのアルゴリズムを使用して暗号化します。認証プロセス中にのみ復号化してください。

3.認証情報を外部に保存する

認証情報のハードコーディングを避けます。代わりに、設定ファイルやデータベースなどの一元的な場所に保存してください。ファイルを保存する前に暗号化し、オプションでファイル自体に別の暗号化層を適用します。

4.送信の保護

トランスポート層セキュリティ (TLS) またはセキュア ソケット レイヤ (SSL) を使用して、送信プロセスを保護します。

5.コードの難読化

コンパイルされたコードに難読化技術を適用して、機密データを隠します。

パスワードの暗号化と復号化の例:

次のコード サンプルは、上記で概説した最初と 2 番目のステップを示しています:

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);
    }
}
ログイン後にコピー

以上がソースコード内のパスワードを安全に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート