Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Pengantar API Keamanan Java

Keamanan adalah salah satu bagian terpenting dari pengembangan aplikasi. Bahasa Java memudahkan untuk mengembangkan aplikasi yang aman dengan menyediakan banyak opsi dan fitur yang membuat aplikasi menjadi aman. Karena ini adalah topik besar, artikel ini akan menyentuh beberapa aspek kunci dari fitur keamanan dan API yang tersedia di platform Java.

Ringkasan

Platform Java, dari bawah ke atas, dibangun dengan mempertimbangkan keamanan. Properti jenis aman dari bahasa dan pengumpulan sampah otomatis menyatakan bahwa arsitektur Java mencoba menyerap fitur keamanan langsung dari intinya.

Dalam beberapa tahun terakhir, keamanan telah menjadi fokus utama. Misalnya, browser modern bekerja untuk membatasi atau mengurangi dukungan plug-in seperti Java, Silverlight, dan Flash karena browser tersebut dapat disalahgunakan untuk memasukkan kode nakal ke dalam add-on yang tampak tidak berbahaya. Meskipun lingkungan Java bersih, sifat dari applet adalah mendownload kode yang tidak dipercaya dari jaringan publik. Ini bisa menjadi pelanggaran keamanan besar. Juga, dunia browser telah berubah secara signifikan dalam beberapa tahun terakhir. Kebutuhan mutlak untuk Applet telah menjadi hampir usang. Mungkin ini dan terutama meningkatnya masalah keamanan membuat Applet tidak digunakan lagi dari Java 9.

Kerangka Keamanan Java

Layanan Keamanan Java telah berkembang dan mencakup sekumpulan besar antarmuka pemrograman aplikasi (API), alat, sejumlah implementasi algoritma keamanan, mekanisme, dan protokol. Ini menyediakan lingkungan yang komprehensif untuk mengembangkan aplikasi yang aman dan mengelolanya sesuai dengan itu.

Rentang API keamanan Java sangat luas. Dasar pengembangan aplikasi yang aman terletak pada antarmuka Kriptografi dan infrastruktur kunci publik (PKI), implementasi algoritme umum yang dapat dioperasikan multipel, dan layanan keamanan lainnya. Ada antarmuka untuk melakukan otentikasi dan kontrol akses. Hal ini memungkinkan aplikasi untuk menjaga dari akses tidak sah ke sumber daya yang dilindungi.

Keamanan Bahasa

Untuk memulainya, bahasa itu sendiri dibangun dengan perhatian untuk menyerap keamanan ke dalam intinya. Contoh paling sederhana mungkin adalah penggabungan tipe keamanan. Ketik aman berarti bahwa program memiliki akses terbatas ke memori saat runtime. Ini dicapai dengan mengaitkan memori hanya dengan objek Java. Objek memiliki kelas terkait yang mendefinisikan perilakunya; ini memastikan bahwa program dapat menindaklanjutinya hanya sesuai dengan perilaku yang ditentukan. Ide ini beresonansi dengan pengecekan tipe dinamis, tetapi Java juga menggabungkan pengecekan tipe statis yang kompleks bila memungkinkan untuk mengatasi keterbatasan rekan dinamisnya. Misalnya, pemverifikasi kode byte adalah pemeriksa tipe statis efektif yang digunakan pada waktu kompilasi untuk memunculkan semua jenis kesalahan dan secara proaktif melaporkan ke pengembang. Pemverifikasi bytecode memastikan bahwa bytecode yang sah dijalankan dengan menyesuaikan diri dengan Spesifikasi Bahasa Java. Selain itu, ia juga memeriksa pelanggaran memori, stack under/overflow, typecast yang tepat, dan sebagainya. Selain itu, ada pengubah seperti private, protected, dan public untuk menegaskan akses terbatas.

Penyedia Keamanan

Layanan bertindak sebagai penyedia keamanan. Mereka, ketika dicolokkan ke platform Java melalui antarmuka standar, memudahkan aplikasi untuk mendapatkan layanan keamanan. Keuntungan dari mekanisme ini adalah pengembang tidak perlu mengetahui detail yang rumit dan sebaliknya dapat fokus untuk mengintegrasikan fitur keamanan ke dalam aplikasi. Ide ini dikemas dalam kelas abstrak yang disebut java.security.Provider . Layanan keamanan diperoleh melalui getInstance() metode yang disediakan oleh Penyedia . Ada banyak penyedia yang dikonfigurasi di mana masing-masing memiliki nama dan nomor versi yang dikonfigurasi di setiap runtime yang diinstal. Misalnya, sebuah program dapat memperoleh algoritme intisari pesan tertentu dengan secara opsional meminta penyedia tertentu dengan namanya sebagai berikut:

MessageDigest messageDigest = MessageDigest.getInstance("MD5",
   "MyProvider1");

Kriptografi

API kriptografi Java didistribusikan di antara dua paket:java.security dan javax.crypto . Java menyediakan berbagai macam layanan kriptografi dengan mengimplementasikan sejumlah algoritma kriptografi. Beberapa di antaranya adalah sebagai berikut:

  • java.security.MessageDigest: Kelas ini menyediakan implementasi fungsi hash satu arah yang mengambil data berukuran arbitrer dan menghasilkan nilai hash dengan panjang tetap. Algoritme tersebut diberi nama SHA-1 atau SHA-256.
  • java.security.Signature: Kelas ini digunakan untuk menyediakan fungsionalitas dari algoritme tanda tangan digital seperti algoritme DSA, RSA, atau DSA, menggunakan algoritme intisari pesan SHA-256. Tanda tangan digital terutama digunakan untuk memastikan integritas dan keaslian data digital.
  • java.security.SecureRandom: Kelas ini menyediakan fungsionalitas untuk menghasilkan bilangan acak yang kuat secara kriptografis.

Infrastruktur Kunci Publik (PKI)

Infrastruktur PKI memungkinkan pertukaran data yang aman menggunakan kriptografi kunci publik. Ini mencakup kunci, sertifikat, enkripsi kunci publik, dan sertifikat digital. Kelas yang terkait dengan PKI disimpan di java.security dan java.security.cert paket.

Otentikasi

Otentikasi adalah proses verifikasi identitas pengguna. Java memungkinkan aplikasi untuk melakukan otentikasi pengguna dengan bantuan modul pluggable. Ada kelas yang disebut LoginContext di javax.security.auth.login kemasan. Kelas ini dipakai dengan nama dan CallbackHandler. Konteks Masuk menggunakan nama sebagai indeks untuk konfigurasi. Konfigurasi menentukan LoginModule specific tertentu (javax.security.auth.spi.LoginModule ). CallbackHandler diteruskan ke LoginModule untuk meminta nama pengguna dan kata sandi, dalam GUI, misalnya.

Komunikasi Aman

Platform Java mengimplementasikan protokol SSL dan TLS yang menyediakan fungsionalitas untuk integritas pesan, enkripsi data, dan otentikasi klien dan server. Ini dapat digunakan untuk membuka jalur komunikasi data yang aman antara rekan-rekan di atas protokol HTTP atau TCP/IP. Dukungan API untuk implementasi dapat ditemukan di javax.net.ssl kemasan. Ada banyak kelas pendukung; misalnya, SSLSocket class adalah ekstensi dari java.net.Socket class untuk menyediakan soket aman menggunakan protokol SSL/TLS. Ini tidak lain adalah soket aliran normal dengan lapisan perlindungan tambahan di atas protokol lapisan transport (TCP).

Kontrol Akses

Kelas kontrol akses melindungi akses ke sumber daya sensitif seperti file lokal. java.lang.SecurityManager kelas menengahi semua akses. Kelas ini memungkinkan aplikasi untuk menerapkan kebijakan keamanan. Oleh karena itu, kemungkinan operasi yang tidak aman dapat dibatasi dalam upaya tersebut, sehingga aplikasi memiliki kontrol penuh atas operasi yang diizinkan.

Kesimpulan

Ini adalah tur singkat tentang fitur, fungsionalitas, dan API keamanan platform Java. Java menyediakan dukungan komprehensif untuk mengimplementasikan keamanan dalam aplikasi di mana pengembang tidak menyadari kerumitan yang terlibat dalam penerapannya, namun menuai manfaatnya. Ini memanfaatkan pengiriman produk yang cepat dan efisien tanpa harus membangun semuanya dari awal.

Referensi

  • Dokumentasi Java API
  • Ikhtisar Keamanan Java

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Membuat dan Menyebarkan Beberapa Versi Basis Data melalui Cuplikan Skema

  2. Kolom Virtual dan Indeks Fungsional

  3. Menyesuaikan Pasokan Dengan Permintaan — Solusi, Bagian 1

  4. Perbedaan antara SQL dan NoSQL

  5. Menghubungkan Delphi ke Salesforce.com