Unsafe Rust memberi Anda lebih banyak kendali atas memori. Pelajari cara bekerja dengan Rust yang tidak aman dan pahami risiko bawaan yang terkait dengan penggunaannya.

Jaminan keamanan memori adalah salah satu nilai jual Rust; namun, Rust tidak kebal terhadap bug dan kerentanan. Karena pemeriksa pinjaman Rust memberlakukan model kepemilikan, ada sedikit trade-off dalam waktu kompilasi selama pemeriksaan keamanan.

Rust menyediakan fungsionalitas untuk melewati pemeriksaan keselamatan dalam fitur yang disebut "Karat Tidak Aman" yang memungkinkan Anda menghindari pemeriksaan keselamatan ini untuk tujuan kinerja. Unsafe Rust adalah alat yang ampuh untuk menulis perangkat lunak sistem tingkat rendah yang efisien dengan Rust.

Memahami Karat yang Tidak Aman

Unsafe Rust adalah sekumpulan fitur yang dapat Anda gunakan untuk melewati jaminan keamanan Rust dengan imbalan kontrol yang lebih besar atas memori. Fitur Rust yang tidak aman mencakup petunjuk mentah, fungsi yang tidak aman, dan sifat yang tidak aman.

instagram viewer

Tujuan dari Rust yang tidak aman adalah untuk memberi pengembang kemampuan untuk menulis kode sistem tingkat rendah tanpa mengorbankan kinerja. Anda dapat mengakses dan memanipulasi sumber daya memori secara langsung dan meningkatkan kinerja aplikasi Anda dengan Rust yang tidak aman.

Karat yang Tidak Aman sangat berguna dalam pengembangan sistem operasi, pemrograman jaringan, dan pengembangan game, di mana kinerja sangat penting. Dalam konteks ini, Anda memerlukan kontrol yang cermat atas tata letak memori dan perilaku kode program. Unsafe Rust memungkinkan Anda mencapainya dengan menyediakan abstraksi tingkat rendah untuk mengimplementasikan algoritme dan struktur data yang kompleks.

Bekerja Dengan Karat yang Tidak Aman

Blok tidak aman menyediakan fungsionalitas untuk menggunakan fitur Rust yang tidak aman. Anda akan menggunakan tidak aman kata kunci untuk menentukan blok tidak aman yang berisi kode Rust yang valid.

Inilah cara Anda dapat menggunakan blok yang tidak aman untuk akses langsung ke memori untuk modifikasi nilai:

fnutama() {
membiarkanmut x = 10;

tidak aman {
membiarkan mentah = &mut X sebagai *muti32;
* mentah = 20;
}

cetak!("x sekarang {}", X);
}

Itu X variabel adalah bilangan bulat yang bisa berubah. Dalam tidak aman blok, pointer mentah ke X memberikan nilai baru untuk X. Kode di tidak aman blok valid tetapi tidak aman, dan tidak berada di blok yang tidak aman; program macet.

Selain itu, Anda dapat menentukan fungsi yang tidak aman dengan menambahkan tidak aman kata kunci sebelum fn kata kunci dalam deklarasi fungsi Anda.

tidak amanfnperform_unsafe_operation() {
// Kode tidak aman Anda di sini
}

Anda memerlukan blok yang tidak aman untuk memanggil fungsi yang tidak aman di bagian lain program Anda.

fnutama() {
tidak aman {
perform_unsafe_operation();
}
}

Menandai fungsi dengan tidak aman kata kunci tidak berarti fungsinya berbahaya secara inheren. Ini menunjukkan bahwa fungsi tersebut berisi kode yang memerlukan kehati-hatian ekstra dalam penggunaannya.

Risiko Terkait Dengan Penggunaan Karat yang Tidak Aman

Penggunaan Rust yang tidak aman secara tidak benar dapat menyebabkan kesalahan memori, kecepatan data, dan kerentanan keamanan lainnya. Oleh karena itu, sangat penting untuk memahami risiko sambil mengikuti praktik terbaik yang terkait dengan Rust yang tidak aman untuk menulis kode yang aman dan berkinerja baik.

Risiko utama yang terkait dengan Rust yang tidak aman adalah potensi bug terkait memori yang dapat menyebabkan crash, kerentanan keamanan, dan perilaku kode yang tidak terdefinisi.

Kesalahan memori terjadi ketika program mencoba mengakses memori secara tidak normal; program akhirnya macet atau berperilaku tidak terduga.

Perlombaan data terjadi ketika dua atau lebih utas program mengakses bagian memori yang sama secara bersamaan, dan pada saat setidaknya salah satu utas memodifikasi nilai dalam memori, sehingga menyebabkan program berperilaku tiba-tiba.

Anda dapat memicu luapan buffer dengan menggunakan Rust yang tidak aman secara tidak benar. Buffer overflows terjadi ketika sebuah program menulis data di luar akhir buffer. Buffer overflow dapat menyebabkan program macet atau memungkinkan penyerang mengeksekusi kode arbitrer.

Kerentanan lainnya adalah use-after-free (UAF) yang terjadi saat program mengakses memori setelah de-alokasi nilai. UAF dapat menyebabkan program berperilaku tidak terduga dan berpotensi menimbulkan kerentanan keamanan.

Karena kerentanan ini, saat bekerja dengan Rust yang tidak aman, sangat penting memahami kepemilikan Rust Dan bagaimana model peminjaman bekerja di Rust sambil mengikuti praktik terbaik.

Manajemen Memori Rust Fleksibel

Model kepemilikan Rust mengelola memori secara otomatis, mengurangi risiko bug terkait memori. Meminjam memungkinkan banyak variabel untuk mengakses sumber daya memori yang sama tanpa konflik secara bersamaan.

Manajemen memori Rust memberikan fleksibilitas, keamanan, dan kinerja yang diperlukan untuk pengembangan perangkat lunak modern, menjadikan Rust alat yang ampuh untuk menulis kode yang efisien dan andal.