Cara Melindungi Nama Pengguna dan Kata Laluan MySQL daripada Penyahsusun
Masalah:
Java .class fail boleh dinyahkompilasi dengan mudah. Bagaimanakah seseorang boleh melindungi pangkalan data jika mereka perlu menggunakan bukti kelayakan log masuk dalam kod?
Jawapan:
Jangan sekali-kali kata laluan kod keras menjadi kod. Ini baru-baru ini diserlahkan dalam "25 Kesilapan Pengaturcaraan Paling Berbahaya Teratas":
"Pengekodan keras akaun rahsia dan kata laluan ke dalam perisian anda amat mudah—untuk jurutera terbalik yang mahir. Jika kata laluan itu konsisten merentas perisian anda , setiap pelanggan menjadi terdedah apabila kata laluan itu pasti diketahui Selain itu, kerana dikodkan dengan keras, ia adalah satu kesulitan yang ketara selesaikan."
Maklumat konfigurasi, termasuk kata laluan, harus disimpan dalam fail berasingan yang dibaca oleh aplikasi semasa pemulaan. Ini adalah satu-satunya kaedah yang benar untuk menghalang kata laluan daripada bocor akibat penyahkompilasi (jangan sekali-kali menyusunnya ke dalam binari pada mulanya).
Penyelesaian:
Untuk Java , penyelesaian mudah ialah menggunakan kelas Keutamaan, direka untuk menyimpan pelbagai tetapan program, termasuk nama pengguna dan kata laluan.
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 }
Dalam ini kod, kaedah setCredentials menetapkan nama pengguna dan kata laluan selepas memaparkan dialog untuk input. Apabila menyambung ke pangkalan data, kaedah getUsername dan getPassword mendapatkan semula nilai yang disimpan. Bukti kelayakan tidak dikodkan keras kepada binari, mengurangkan risiko keselamatan yang ditimbulkan oleh penyahkompilasi.
Nota Penting:
Atas ialah kandungan terperinci Bagaimana untuk Melindungi Kredensial MySQL dalam Kod Java Terhadap Penyahkompilasi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!