Bahasa Konfigurasi KSON Menghadapi Kebimbangan Keselamatan dan Sintaks Walaupun Menggunakan Pendekatan Mengutamakan UI

Pasukan Komuniti BigGo
Bahasa Konfigurasi KSON Menghadapi Kebimbangan Keselamatan dan Sintaks Walaupun Menggunakan Pendekatan Mengutamakan UI

Bahasa konfigurasi baharu yang dipanggil KSON telah memasuki beta awam, berjanji untuk menganggap fail konfigurasi sebagai antara muka pengguna dan bukannya format data mudah. Walaupun projek ini bertujuan untuk menyelesaikan masalah biasa dengan YAML dan JSON , maklum balas komuniti awal mendedahkan kebimbangan ketara tentang risiko keselamatan dan kekaburan sintaks.

Sokongan Platform KSON

  • Bahasa yang Disokong: JavaScript/TypeScript, Python, Rust, JVM, Kotlin Multiplatform
  • Sokongan IDE: VS Code, JetBrains IDEs, editor yang serasi dengan LSP
  • Sokongan Seni Bina: Windows/Linux/macOS pada x86_64/arm64 sahaja
  • Saiz Perpustakaan: 2MB dikompil
  • Pelaksanaan: Kod asas Kotlin tunggal dengan pengikatan bahasa

Risiko Keselamatan Rantaian Bekalan Menimbulkan Bendera Merah

Kebimbangan paling serius tertumpu pada seni bina pelaksanaan KSON . Bahasa ini dibina sepenuhnya dalam Kotlin , dengan pengikatan bahasa pengaturcaraan lain hanya memaut kepada versi Kotlin . Ini mewujudkan proses pembinaan yang kompleks yang memuat turun perpustakaan yang telah dikompil dari GitHub tanpa pengesahan hash. Sistem pembinaan juga secara automatik memuat turun binari besar termasuk OpenJDK , pixi, dan GraalVM semasa kompilasi.

Untuk organisasi yang sudah menggunakan sistem berasaskan JVM , ini mungkin boleh diterima. Walau bagaimanapun, untuk projek dalam ekosistem lain, terutamanya yang mempunyai keperluan keselamatan yang ketat, pendekatan ini memperkenalkan risiko rantaian bekalan yang besar. Pemuat turunan automatik binari yang tidak disahkan bertentangan dengan amalan terbaik keselamatan moden.

Kebimbangan Keselamatan Utama

  • Memuat turun perpustakaan yang telah dikompil dari GitHub tanpa pengesahan hash
  • Proses pembinaan secara automatik memuat turun binari OpenJDK , pixi, dan GraalVM
  • Tiada pelaksanaan natif tersedia di luar ekosistem JVM
  • Sokongan kompilasi silang yang terhad
  • Risiko serangan rantai bekalan untuk projek bukan- JVM

Pengendalian Ruang Putih Mencipta Masalah Baharu

KSON memasarkan dirinya sebagai tidak mempunyai sensitiviti ruang putih untuk mengelakkan masalah lekukan terkenal YAML . Walau bagaimanapun, pilihan reka bentuk ini memperkenalkan set masalahnya sendiri. Ujian komuniti mendedahkan bahawa lekukan yang mengelirukan boleh mencipta hasil penghuraian yang mengelirukan yang tidak sepadan dengan jangkaan visual.

Satu contoh menunjukkan bagaimana konfigurasi port yang kelihatan mudah boleh dihuraikan menjadi struktur bersarang yang tidak dijangka, dengan beberapa nilai menjadi tatasusunan apabila ia tidak dimaksudkan untuk menjadi. Walaupun KSON termasuk amaran untuk lekukan yang mengelirukan dan pemformat automatik, pengkritik berpendapat bahawa mencegah isu ini sepenuhnya akan lebih baik daripada memberi amaran tentangnya selepas fakta.

Penerimaan Bercampur untuk Falsafah Berpusatkan UI

Idea teras di sebalik KSON - menganggap konfigurasi sebagai reka bentuk antara muka pengguna - telah mencetuskan perbincangan yang menarik. Bahasa ini termasuk ciri lanjutan seperti SQL terbenam dengan penyerlahan sintaks, sokongan JSON Schema asli, dan integrasi IDE komprehensif merentas platform VS Code dan JetBrains .

Sesetengah pembangun menghargai pendekatan ini, terutamanya keupayaan untuk membenamkan bahasa yang berbeza dalam fail konfigurasi sambil mengekalkan penyerlahan sintaks dan pengesahan yang betul. Yang lain bimbang bahawa mencampurkan kod dan konfigurasi melanggar prinsip seni bina perisian yang baik.

Konfigurasi adalah sukar, perkakas jarang menjadi masalah (sekurang-kurangnya dalam pengalaman saya).

Pendekatan Alternatif Mendapat Perhatian

Perbincangan KSON telah menyerlahkan pelbagai pendekatan alternatif untuk pengurusan konfigurasi. Sesetengah pembangun menyokong penggunaan bahasa pengaturcaraan sebenar seperti Python atau TypeScript untuk konfigurasi, dengan alasan bahawa ini menyediakan perkakas dan keselamatan jenis yang lebih baik. Yang lain menunjuk kepada penyelesaian sedia ada seperti JSON5 , KDL , atau Dhall sebagai alternatif yang lebih matang.

Beberapa pengulas menyatakan bahawa cabaran asas bukanlah sintaks fail konfigurasi, tetapi struktur dan penamaan pilihan konfigurasi itu sendiri. Nama medan yang jelas dan pengesahan data yang betul sering lebih penting daripada format fail asas.

Perbandingan KSON vs Alternatif

  • KSON: Superset JSON , bahasa terbenam, integrasi IDE , tidak sensitif ruang putih
  • YAML: Diterima pakai secara meluas, sensitif ruang putih, terdedah kepada ralat penghuraian
  • JSON5: Superset JSON , sokongan komen, lebih mudah daripada KSON
  • TOML: Sintaks minimal, keupayaan bersarang terhad
  • KDL: Model data seperti XML , tidak serasi dengan JSON
  • Dhall: Bahasa berfungsi, penaipan kuat, keluk pembelajaran yang curam

Jurang Pelaksanaan Mengehadkan Penggunaan

Selain kebimbangan keselamatan, KSON pada masa ini mempunyai sokongan platform yang terhad dan tidak mengendalikan kompilasi silang dengan baik. Perpustakaan yang dikompil, walaupun lebih kecil daripada yang dijangkakan pada 2MB , masih dianggap berat mengikut standard komuniti bahasa tertentu.

Penyelenggara projek mengakui batasan ini dan menyatakan harapan untuk pelaksanaan asli dalam pelbagai bahasa pengaturcaraan semasa pembangunan berlangsung. Walau bagaimanapun, pergantungan semasa pada pelaksanaan Kotlin mewujudkan halangan untuk penggunaan dalam banyak persekitaran.

Walaupun visi KSON tentang konfigurasi-sebagai- UI mewakili pendekatan yang menarik kepada masalah biasa, respons komuniti awal menunjukkan bahawa kebimbangan keselamatan dan kekaburan sintaks mungkin mengehadkan penggunaannya sehingga isu asas ini ditangani.

Rujukan: Configuration files are user interfaces