Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Penyimpanan kata sandi akun email dalam program server Java/Mysql

Komentar yang menunjukkan bahwa SMTP tidak memerlukan otentikasi adalah benar. Yang mengatakan, ketiganya dari opsi yang Anda tentukan tidak aman, dengan asumsi bahwa server menggunakan perangkat keras dan perangkat lunak komoditas. Saya akan menunjukkan mengapa masing-masing tidak aman, meskipun saya tidak akan mengikuti perintah awal Anda.

Bagaimana jika seseorang mencuri server? Kemudian, mereka cukup membuka file atau database, membaca kata sandi, dan segera memiliki akses ke semua informasi penting di perusahaan. Jadi, kecuali Anda memiliki penjaga bersenjata yang mengelilingi server siang dan malam, ini sudah cukup tidak aman.

Tapi itu semakin buruk. Tidak ada sistem komputer yang sepenuhnya kebal terhadap serangan, dan beberapa serangan yang dipublikasikan dengan baik (Sony's PlayStation Network, misalnya) dalam beberapa tahun terakhir telah menunjukkan bahwa penyerang dapat mengakses isi file disk dan database tanpa akses fisik. Selain itu, tampaknya dari pertanyaan Anda bahwa server yang dimaksud dimaksudkan untuk menerima paket (permintaan HTTP, email masuk, dll.) dari dunia luar, yang meningkatkan permukaan serangan Anda.

Ini menggoda, tetapi ini bahkan lebih merusak daripada opsi 2 atau opsi 3. Untuk satu hal, bidang string akhir pribadi disimpan dalam file .class yang dihasilkan oleh kompiler Java, jadi dengan opsi ini Anda sudah menyimpan kata sandi yang tidak terenkripsi pada hard drive server. Setelah membahayakan server seperti pada opsi 2 atau 3, penyerang dapat menjalankan javap untuk mendapatkan kata sandi plaintext dari file .class.

Pendekatan ini semakin memperluas permukaan serangan Anda. Jika kata sandi disimpan sebagai bagian dari kode sumber, tiba-tiba itu tersedia untuk semua pengembang yang mengerjakan kode tersebut. Di bawah prinsip hak istimewa paling rendah, pengembang tidak boleh mengetahui kata sandi tambahan, dan ada alasan yang sangat bagus di sini. Jika salah satu pengembang mesin dicuri atau disusupi dari luar, penyerang dapat melihat melalui hard drive mesin yang disusupi dan mendapatkan kata sandi plaintext. Lalu ada kontrol sumber. Salah satu manfaat yang sangat penting dari kontrol sumber adalah memungkinkan Anda untuk memeriksa versi kode Anda sebelumnya. Jadi, meskipun Anda beralih ke metode aman di masa mendatang, jika sandi pernah masuk ke kontrol sumber, maka server kontrol sumber adalah titik serangan potensial.

Semua faktor ini ditambahkan untuk menunjukkan bahwa, meskipun keamanan server HTTP/mail adalah yang terbaik, opsi 1 meningkatkan permukaan serangan sedemikian rupa sehingga keamanan server HTTP/mail tidak terlalu membantu.

Detail tambahan:Pada awalnya saya menetapkan "dengan asumsi bahwa server menggunakan perangkat keras dan perangkat lunak komoditas." Jika Anda tidak menggunakan perangkat keras dan perangkat lunak komoditas, Anda dapat melakukan hal-hal seperti boot dari penyimpanan hanya-baca dan hanya menggunakan database terenkripsi, yang mengharuskan seseorang untuk memberikan kunci dekripsi pada setiap boot. Setelah itu, informasi yang didekripsi hanya tinggal di memori, dan tidak pernah ditulis ke disk. Dengan cara ini, jika server dicuri, penyerang harus mencabut server dan kehilangan semua informasi yang didekripsi yang hanya ada di memori. Pengaturan semacam ini kadang-kadang digunakan untuk KDC Kerberos (dengan server dalam kotak terkunci untuk keamanan ekstra), tetapi jarang digunakan sebaliknya, dan sejujurnya berlebihan ketika ada cara mudah untuk menyelesaikan masalah Anda tanpa melakukan semua ini ekstra biaya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tiba-tiba mencapai batas memori PHP dengan satu permintaan PDO?

  2. Bagaimana cara memberi peringkat nilai array dengan nilai duplikat dan melewatkan beberapa posisi jika ada seri?

  3. Dapatkan semua anak dengan id orang tua dan klausa di mana di mysql

  4. Peningkatan prosedur tersimpan tidak kompatibel dengan sql_mode=only_full_group_by meskipun sql_mode kosong

  5. Lewati nomor sebagai nama kolom dalam pernyataan pilih Sql