Pengurus Keselamatan Java adalah komponen keselamatan dalam JVM yang mengawal kebenaran kod anda. Ia mentakrifkan pemetaan sumber kod dan keizinan melalui fail dasar, memeriksa operasi sensitif semasa runtime, dan melemparkan SecurityException jika tidak ada kebenaran. Diaktifkan untuk menentukan fail dasar dengan menambah -djava.security.manager dan -djava.security.policy parameter pada permulaan. Fail dasar menggunakan geran untuk menentukan codebase dan keizinannya. Kebenaran umum termasuk fail, socketpermission, runtimepermission, dan propertypermission. Senario yang berkenaan termasuk menjalankan pemalam yang tidak dipercayai, pelaksanaan kotak pasir, dan aplikasi perusahaan yang memerlukan pengasingan kebenaran. Beri perhatian kepada kebergantungan perpustakaan pihak ketiga terhadap kebenaran, risiko penyalahgunaan kad liar, dan risiko keselamatan allpermission.
Pengurus Keselamatan Java adalah mekanisme dalam platform Java untuk meningkatkan keselamatan program. Ia membolehkan anda menentukan dasar keselamatan halus yang mengawal kod yang boleh dan tidak boleh dilakukan. Walaupun banyak rangka kerja dan aplikasi tidak lagi membolehkan Pengurus Keselamatan secara lalai, ia masih berguna dalam senario tertentu (seperti menjalankan kod yang tidak dipercayai).

Apa itu Pengurus Keselamatan Java?
Ringkasnya, Pengurus Keselamatan adalah komponen dalam JVM. Ia memeriksa sama ada kod tersebut mempunyai kebenaran untuk melakukan operasi sensitif tertentu pada masa runtime, seperti membaca dan menulis fail, mewujudkan sambungan rangkaian, kelas memuatkan, dan lain -lain. Jika tidak ada kebenaran, SecurityException
akan dibuang.

Intinya adalah untuk menentukan kod mana yang mempunyai keizinan melalui fail dasar . Anda boleh memahaminya sebagai "pengawal keselamatan" yang bertanggungjawab untuk menjaga program Java anda dan menghalang operasi yang berniat jahat atau tidak patuh daripada dilaksanakan.
Bagaimana untuk membolehkan Pengurus Keselamatan?
Cara untuk membolehkan Pengurus Keselamatan adalah mudah, anda hanya perlu menambah dua parameter apabila memulakan aplikasi Java anda:

java -djava.security.manager -djava.security.policy = my.policy myApp
dalam:
-
-Djava.security.manager
bermaksud membolehkan pengurus keselamatan. -
-Djava.security.policy=my.policy
Menentukan fail dasar untuk digunakan.
Jika anda tidak menentukan fail dasar, JVM menggunakan dasar keselamatan lalai, yang biasanya sangat ketat dan boleh menyebabkan program tidak berfungsi dengan baik.
Bagaimana cara menulis fail dasar?
Fail dasar digunakan untuk menentukan hubungan pemetaan antara sumber kod dan keizinan. Formatnya kira -kira seperti berikut:
Grant CodeBase "File:/Path/to/MyApp/-" { kebenaran java.io.filpermission "/tmp/-", "baca, tulis"; kebenaran java.net.socketpermission "*: 1024-65535", "Connect, Resolve"; };
Konfigurasi di atas bermaksud:
Semua kod dari /path/to/myapp/
direktori boleh membaca dan menulis fail di bawah /tmp
, dan boleh menyambung ke port 1024 hingga 65535 dari mana -mana hos.
Beberapa jenis kebenaran biasa termasuk:
-
FilePermission
: Mengawal bacaan dan penulisan fail -
SocketPermission
: Sambungan rangkaian kawalan -
RuntimePermission
: Mengawal akses kepada sumber sistem, seperti keluar dari JVM -
PropertyPermission
: Mengawal bacaan dan penulisan sifat sistem
Bilakah pengurus keselamatan sesuai?
Walaupun Pengurus Keselamatan tidak disyorkan untuk kerangka aplikasi kebanyakan moden seperti Spring Boot, ia masih berfungsi dalam senario berikut:
- Jalankan pemalam atau skrip yang dikemukakan oleh pengguna (seperti sistem semakan dalam talian)
- Laksanakan kod yang tidak dipercayai dalam persekitaran kotak pasir (seperti applet atau sistem pemalam modular)
- Aplikasi peringkat perusahaan yang memerlukan kawalan keizinan yang baik untuk modul yang berbeza
Harus diingat bahawa pengurus keselamatan hanya sebahagian daripada sistem keselamatan Java dan ia tidak dapat menggantikan langkah -langkah keselamatan lain, seperti tandatangan kod, komunikasi yang disulitkan, dll.
Beberapa perkara untuk memberi perhatian kepada maklumat kecil
- Jika anda menggunakan perpustakaan pihak ketiga, mereka mungkin bergantung pada kebenaran sistem tertentu, seperti membuat benang atau mengakses pembolehubah persekitaran. Jika Pengurus Keselamatan tidak melepaskan kebenaran ini, program ini akan melaporkan ralat.
- Fail dasar menyokong kad liar, tetapi tidak menyalahgunakannya, jika tidak, mereka boleh menyebabkan kelemahan keselamatan.
- Berhati -hati apabila menggunakan
AllPermission
, yang bersamaan dengan memberikan cahaya hijau kepada kod tertentu dan melangkau semua pemeriksaan keselamatan.
Pada dasarnya itu sahaja. Pengurus Keselamatan tidak rumit, tetapi mudah untuk mengabaikan butiran. Jika anda hanya membangunkan aplikasi biasa, anda mungkin tidak memerlukannya; Tetapi apabila kebenaran pengasingan atau sandboxing terlibat, ia adalah alat yang patut diketahui.
Atas ialah kandungan terperinci Memahami Pengurus Keselamatan Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Perbezaan antara hashmap dan hashtable terutamanya dicerminkan dalam keselamatan benang, sokongan nilai null dan prestasi. 1. Dari segi keselamatan benang, hashtable adalah benang selamat, dan kaedahnya kebanyakannya kaedah segerak, sementara hashmap tidak melakukan pemprosesan penyegerakan, yang bukan benang-selamat; 2. Dari segi sokongan nilai null, hashmap membolehkan satu kunci null dan nilai null berbilang, manakala hashtable tidak membenarkan kekunci atau nilai null, jika tidak, nullPointerException akan dibuang; 3. Dari segi prestasi, hashmap lebih cekap kerana tidak ada mekanisme penyegerakan, dan Hashtable mempunyai prestasi penguncian yang rendah untuk setiap operasi. Adalah disyorkan untuk menggunakan ConcurrentHashMap sebaliknya.

Staticmethodsininterfaceswereintroducedinjava8toallowutilityfunctionswithintheintheinterfaceitself.beforjava8, SuchfunctionsRequiredseparateHelpereHelperes, LeadingTodisorgaganizedCode.Now, staticmethodethreeKeybeeMeKeBeReSes, staticmethodeDethreeKeybeeMeKeBeReSes, staticmethodethreeKeybeeMeKeKeBeReSes, staticmethodeDethreeKeybeeMeKeKeBeReKeNey

Penyusun JIT mengoptimumkan kod melalui empat kaedah: kaedah dalam talian, pengesanan tempat panas dan penyusunan, spekulasi jenis dan devirtualisasi, dan penghapusan operasi yang berlebihan. 1. Kaedah sebaris mengurangkan panggilan overhead dan memasukkan kaedah kecil yang sering dipanggil terus ke dalam panggilan; 2. Pengesanan tempat panas dan pelaksanaan kod frekuensi tinggi dan mengoptimumkannya untuk menjimatkan sumber; 3. Jenis spekulasi mengumpul maklumat jenis runtime untuk mencapai panggilan devirtualisasi, meningkatkan kecekapan; 4. Operasi berlebihan menghapuskan pengiraan dan pemeriksaan yang tidak berguna berdasarkan penghapusan data operasi, meningkatkan prestasi.

Blok permulaan contoh digunakan dalam Java untuk menjalankan logik inisialisasi apabila membuat objek, yang dilaksanakan sebelum pembina. Ia sesuai untuk senario di mana beberapa pembina berkongsi kod inisialisasi, permulaan medan kompleks, atau senario permulaan kelas tanpa nama. Tidak seperti blok inisialisasi statik, ia dilaksanakan setiap kali ia ditegaskan, manakala blok permulaan statik hanya dijalankan sekali apabila kelas dimuatkan.

Mod kilang digunakan untuk merangkum logik penciptaan objek, menjadikan kod lebih fleksibel, mudah dikekalkan, dan ditambah longgar. Jawapan teras adalah: dengan mengurus logik penciptaan objek secara berpusat, menyembunyikan butiran pelaksanaan, dan menyokong penciptaan pelbagai objek yang berkaitan. Keterangan khusus adalah seperti berikut: Mod Kilang menyerahkan penciptaan objek ke kelas kilang khas atau kaedah untuk diproses, mengelakkan penggunaan Newclass () secara langsung; Ia sesuai untuk senario di mana pelbagai jenis objek yang berkaitan dicipta, logik penciptaan boleh berubah, dan butiran pelaksanaan perlu disembunyikan; Sebagai contoh, dalam pemproses pembayaran, jalur, paypal dan contoh lain dicipta melalui kilang -kilang; Pelaksanaannya termasuk objek yang dikembalikan oleh kelas kilang berdasarkan parameter input, dan semua objek menyedari antara muka yang sama; Varian biasa termasuk kilang -kilang mudah, kaedah kilang dan kilang abstrak, yang sesuai untuk kerumitan yang berbeza.

Injava, thefinalkeywordpreventsavariable'svaluefrombeingchangedafterassignment, butitsbehaviordiffersforprimitivesandobjectreferences.forprimitiveVariables, finalmakesthevalueconstant, asinfinalintmax_speed = 100;

Terdapat dua jenis penukaran: tersirat dan eksplisit. 1. Penukaran tersirat berlaku secara automatik, seperti menukar int untuk berganda; 2. Penukaran eksplisit memerlukan operasi manual, seperti menggunakan (int) mydouble. Kes di mana penukaran jenis diperlukan termasuk memproses input pengguna, operasi matematik, atau lulus pelbagai jenis nilai antara fungsi. Isu-isu yang perlu diperhatikan adalah: Mengubah nombor terapung ke dalam bilangan bulat akan memotong bahagian pecahan, mengubah jenis besar menjadi jenis kecil boleh menyebabkan kehilangan data, dan beberapa bahasa tidak membenarkan penukaran langsung jenis tertentu. Pemahaman yang betul tentang peraturan penukaran bahasa membantu mengelakkan kesilapan.

Java menggunakan kelas pembalut kerana jenis data asas tidak dapat mengambil bahagian secara langsung dalam operasi berorientasikan objek, dan bentuk objek sering diperlukan dalam keperluan sebenar; 1. Kelas koleksi hanya boleh menyimpan objek, seperti senarai menggunakan tinju automatik untuk menyimpan nilai berangka; 2. Generik tidak menyokong jenis asas, dan kelas pembungkusan mesti digunakan sebagai parameter jenis; 3. Kelas pembungkusan boleh mewakili nilai null untuk membezakan data yang tidak tersendiri atau hilang; 4. Kelas pembungkusan menyediakan kaedah praktikal seperti penukaran rentetan untuk memudahkan parsing dan pemprosesan data, jadi dalam senario di mana ciri -ciri ini diperlukan, kelas pembungkusan sangat diperlukan.
