Rust smart contract pengembangan jurnal (7) Keamanan kontrak dalam kontrol akses
Artikel ini akan memperkenalkan kontrol akses dalam smart contract Rust dari dua sudut pandang:
Visibilitas akses/panggilan metode (fungsi) kontrak
Kontrol akses fungsi hak istimewa/pembagian tanggung jawab
1. Visibilitas Fungsi (Metode) Kontrak
Kontrol visibilitas fungsi kontrak sangat penting untuk melindungi bagian-bagian kunci dari akses atau manipulasi yang tidak disengaja. Sebagai contoh, insiden keamanan di bursa Bancor Network pada 18 Juni 2020 terjadi karena kesalahan pengaturan hak akses fungsi kunci kontrak.
Dalam kontrak pintar Rust, ada beberapa jenis visibilitas fungsi:
pub fn: Menunjukkan bahwa metode ini bersifat publik, merupakan bagian dari antarmuka kontrak, dan dapat dipanggil dari luar kontrak.
fn: Jika tidak secara eksplisit menyebutkan pub, maka fungsi tersebut tidak dapat dipanggil langsung dari luar kontrak, hanya dapat dipanggil di dalam kontrak.
pub(crate) fn: Batasi metode agar hanya dapat dipanggil dalam lingkup crate.
Cara lain untuk mengatur metode sebagai internal adalah dengan mendefinisikannya di dalam blok kode impl Contract yang tidak diberi modifikasi #[near_bindgen].
Untuk fungsi callback, harus diatur sebagai atribut publik, tetapi perlu dipastikan bahwa hanya kontrak itu sendiri yang dapat memanggilnya. Anda dapat menggunakan makro #[private] untuk mencapai hal ini.
2. Kontrol Akses Fungsi Privilege ( Mekanisme Daftar Putih )
Selain visibilitas fungsi, perlu juga membangun mekanisme daftar putih kontrol akses yang lengkap dari perspektif semantik. Beberapa fungsi privilese ( seperti inisialisasi kontrak, mengaktifkan/menonaktifkan, dan lain-lain ) hanya dapat dipanggil oleh pemilik kontrak.
Dapat mewujudkan Trait kustom untuk melakukan kontrol akses, memeriksa apakah pemanggil adalah pemilik kontrak:
Halaman ini mungkin berisi konten pihak ketiga, yang disediakan untuk tujuan informasi saja (bukan pernyataan/jaminan) dan tidak boleh dianggap sebagai dukungan terhadap pandangannya oleh Gate, atau sebagai nasihat keuangan atau profesional. Lihat Penafian untuk detailnya.
13 Suka
Hadiah
13
2
Posting ulang
Bagikan
Komentar
0/400
PumpBeforeRug
· 08-09 06:44
Kecelakaan Bancor itu juga karena izin yang tidak diatur dengan baik, kan?
Lihat AsliBalas0
OffchainOracle
· 08-09 06:32
Kecelakaan Bancor ini harus dijadikan peringatan yang dicontohkan di buku teks.
Keamanan smart contract Rust: Memahami lebih dalam tentang kontrol akses dan manajemen izin
Rust smart contract pengembangan jurnal (7) Keamanan kontrak dalam kontrol akses
Artikel ini akan memperkenalkan kontrol akses dalam smart contract Rust dari dua sudut pandang:
1. Visibilitas Fungsi (Metode) Kontrak
Kontrol visibilitas fungsi kontrak sangat penting untuk melindungi bagian-bagian kunci dari akses atau manipulasi yang tidak disengaja. Sebagai contoh, insiden keamanan di bursa Bancor Network pada 18 Juni 2020 terjadi karena kesalahan pengaturan hak akses fungsi kunci kontrak.
Dalam kontrak pintar Rust, ada beberapa jenis visibilitas fungsi:
Cara lain untuk mengatur metode sebagai internal adalah dengan mendefinisikannya di dalam blok kode impl Contract yang tidak diberi modifikasi #[near_bindgen].
Untuk fungsi callback, harus diatur sebagai atribut publik, tetapi perlu dipastikan bahwa hanya kontrak itu sendiri yang dapat memanggilnya. Anda dapat menggunakan makro #[private] untuk mencapai hal ini.
2. Kontrol Akses Fungsi Privilege ( Mekanisme Daftar Putih )
Selain visibilitas fungsi, perlu juga membangun mekanisme daftar putih kontrol akses yang lengkap dari perspektif semantik. Beberapa fungsi privilese ( seperti inisialisasi kontrak, mengaktifkan/menonaktifkan, dan lain-lain ) hanya dapat dipanggil oleh pemilik kontrak.
Dapat mewujudkan Trait kustom untuk melakukan kontrol akses, memeriksa apakah pemanggil adalah pemilik kontrak:
karat pub trait Ownable { fn assert_owner(&self) { assert_eq!(env::predecessor_account_id(), self.get_owner()); } AccountId; fn set_owner(&mut self, owner: AccountId); }
Berdasarkan prinsip ini, dapat diatur beberapa pengguna atau beberapa daftar putih, untuk mewujudkan kontrol akses grup yang lebih rinci.
3. Metode Kontrol Akses yang Lebih Banyak
Metode kontrol akses lainnya dalam kontrak pintar Rust termasuk:
Konten ini akan dijelaskan secara rinci dalam artikel selanjutnya.