Less is Safeer: bagaimana Obsidian mengurangi risiko serangan rantai pasokan Serangan rantai pasokan adalah pembaruan berbahaya yang menyelinap ke kode sumber terbuka yang digunakan oleh banyak aplikasi. Inilah cara kami mendesain Obsidian untuk memastikan bahwa aplikasi tersebut adalah lingkungan yang aman dan pribadi untuk pemikiran Anda. Lebih sedikit lebih aman Ini mungkin terdengar jelas, tetapi cara utama kami mengurangi risiko serangan rantai pasokan adalah dengan menghindari bergantung pada kode pihak ketiga. Obsidian memiliki jumlah dependensi yang rendah dibandingkan dengan aplikasi lain dalam kategori kami. Lihat daftar pustaka sumber terbuka di halaman Kredit kami. Fitur-fitur seperti Bases dan Canvas diimplementasikan dari awal alih-alih mengimpor perpustakaan siap pakai. Ini memberi kita kendali penuh atas apa yang berjalan di Obsidian. - Untuk fungsi utilitas kecil, kita hampir selalu mengimplementasikannya kembali dalam kode kita. - Untuk modul menengah, kami mencabang dan menyimpannya di dalam basis kode kami jika lisensi mengizinkannya. - Untuk perpustakaan besar seperti pdf.js, Mermaid, dan MathJax, kami menyertakan file yang diketahui baik, terkunci versi dan hanya meningkatkan sesekali, atau ketika perbaikan keamanan mendarat. Kami membaca catatan rilis, melihat perubahan hulu, dan menguji secara menyeluruh sebelum beralih. Pendekatan ini membuat grafik dependensi kita dangkal dengan sedikit sub-dependensi. Area permukaan yang lebih kecil menurunkan kemungkinan pembaruan berbahaya terlewatkan. Apa yang sebenarnya dikirimkan di aplikasi Hanya beberapa paket yang merupakan bagian dari aplikasi yang Anda jalankan, misalnya Electron, CodeMirror, moment.js. Paket lainnya membantu kami membangun aplikasi dan tidak pernah dikirim ke pengguna, misalnya esbuild atau eslint. Penyematan versi dan kuncifile Semua dependensi disematkan versi secara ketat dan dilakukan dengan file kunci. Lockfile adalah sumber kebenaran untuk build sehingga kita mendapatkan instalasi deterministik. Ini memberi kami jejak audit langsung saat meninjau perubahan. Kami tidak menjalankan skrip pascainstalan. Ini mencegah paket mengeksekusi kode arbitrer selama penginstalan. Peningkatan yang lambat dan disengaja Saat kami melakukan pembaruan dependensi, kami: ...