Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Melindungi Kredensial MySQL dalam Kod Java Terhadap Penyahkompilasi?

Bagaimana untuk Melindungi Kredensial MySQL dalam Kod Java Terhadap Penyahkompilasi?

Linda Hamilton
Lepaskan: 2024-12-17 19:51:12
asal
143 orang telah melayarinya

How to Secure MySQL Credentials in Java Code Against Decompilation?

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
}
Salin selepas log masuk

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:

  • Fail pilihan ialah fail XML teks biasa. Halang pengguna yang tidak dibenarkan daripada mengaksesnya (kebenaran UNIX dan Windows, dll.).
  • Seni bina yang betul bergantung pada konteks aplikasi. Jika pengguna mengetahui (dan diberi kuasa untuk mengetahui) kelayakan, penyelesaian di atas berfungsi. Walau bagaimanapun, jika cuba menyembunyikan bukti kelayakan daripada pengguna, seni bina berbilang peringkat disyorkan dengan lapisan tengah yang mengesahkan pengguna dan memberikan operasi terhad.
  • Dalam seni bina berbilang peringkat, pengguna mempunyai kelayakan mereka sendiri untuk pengesahan dengan peringkat logik perniagaan, tetapi bukan pangkalan data. Oleh itu, aplikasi pelanggan tidak pernah bersambung terus ke pangkalan data.

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan