Ngôn ngữ cấu hình KSON đối mặt với các lo ngại về bảo mật và cú pháp bất chấp cách tiếp cận UI-First

Nhóm Cộng đồng BigGo
Ngôn ngữ cấu hình KSON đối mặt với các lo ngại về bảo mật và cú pháp bất chấp cách tiếp cận UI-First

Một ngôn ngữ cấu hình mới có tên KSON đã bước vào giai đoạn beta công khai, hứa hẹn sẽ xử lý các tệp cấu hình như giao diện người dùng thay vì chỉ là định dạng dữ liệu đơn giản. Trong khi dự án này nhằm giải quyết các vấn đề thường gặp với YAML và JSON , phản hồi sớm từ cộng đồng đã tiết lộ những lo ngại đáng kể về rủi ro bảo mật và sự mơ hồ trong cú pháp.

Hỗ trợ Nền tảng KSON

  • Ngôn ngữ được Hỗ trợ: JavaScript/TypeScript, Python, Rust, JVM, Kotlin Multiplatform
  • Hỗ trợ IDE: VS Code, JetBrains IDEs, các trình soạn thảo tương thích LSP
  • Hỗ trợ Kiến trúc: Windows/Linux/macOS trên x86_64/arm64 duy nhất
  • Kích thước Thư viện: 2MB đã biên dịch
  • Triển khai: Codebase Kotlin đơn lẻ với các ràng buộc ngôn ngữ

Rủi ro bảo mật chuỗi cung ứng gây ra cảnh báo đỏ

Lo ngại nghiêm trọng nhất tập trung vào kiến trúc triển khai của KSON . Ngôn ngữ này được xây dựng hoàn toàn bằng Kotlin , với các ràng buộc ngôn ngữ lập trình khác chỉ đơn giản liên kết đến phiên bản Kotlin . Điều này tạo ra một quy trình xây dựng phức tạp tải xuống các thư viện được biên dịch trước từ GitHub mà không có xác minh hash. Hệ thống xây dựng cũng tự động tải xuống các tệp nhị phân lớn bao gồm OpenJDK , pixi và GraalVM trong quá trình biên dịch.

Đối với các tổ chức đã sử dụng hệ thống dựa trên JVM , điều này có thể chấp nhận được. Tuy nhiên, đối với các dự án trong các hệ sinh thái khác, đặc biệt là những dự án có yêu cầu bảo mật nghiêm ngặt, cách tiếp cận này đưa ra những rủi ro chuỗi cung ứng đáng kể. Việc tự động tải xuống các tệp nhị phân chưa được xác minh đi ngược lại các thực hành bảo mật hiện đại tốt nhất.

Các Mối Quan Ngại Bảo Mật Chính

  • Tải xuống các thư viện đã biên dịch sẵn từ GitHub mà không xác minh hash
  • Quá trình xây dựng tự động tải xuống các tệp nhị phân OpenJDK , pixi và GraalVM
  • Không có triển khai gốc nào khả dụng bên ngoài hệ sinh thái JVM
  • Hỗ trợ biên dịch chéo hạn chế
  • Rủi ro tấn công chuỗi cung ứng đối với các dự án không phải JVM

Xử lý khoảng trắng tạo ra các vấn đề mới

KSON tự quảng cáo là không có độ nhạy khoảng trắng để tránh các vấn đề thụt lề khét tiếng của YAML . Tuy nhiên, lựa chọn thiết kế này lại đưa ra một loạt vấn đề riêng. Kiểm tra từ cộng đồng tiết lộ rằng việc thụt lề gây hiểu lầm có thể tạo ra kết quả phân tích cú pháp khó hiểu không khớp với kỳ vọng trực quan.

Một ví dụ cho thấy cách một cấu hình cổng có vẻ đơn giản có thể phân tích thành một cấu trúc lồng nhau không mong muốn, với một số giá trị trở thành mảng khi chúng không được dự định như vậy. Trong khi KSON bao gồm các cảnh báo cho việc thụt lề gây hiểu lầm và một trình định dạng tự động, các nhà phê bình cho rằng việc ngăn chặn hoàn toàn những vấn đề này sẽ tốt hơn là cảnh báo về chúng sau khi xảy ra.

Phản ứng trái chiều đối với triết lý lấy UI làm trung tâm

Ý tưởng cốt lõi đằng sau KSON - xử lý cấu hình như thiết kế giao diện người dùng - đã khơi mào những cuộc thảo luận thú vị. Ngôn ngữ này bao gồm các tính năng nâng cao như SQL nhúng với tô sáng cú pháp, hỗ trợ JSON Schema gốc và tích hợp IDE toàn diện trên các nền tảng VS Code và JetBrains .

Một số nhà phát triển đánh giá cao cách tiếp cận này, đặc biệt là khả năng nhúng các ngôn ngữ khác nhau trong các tệp cấu hình trong khi vẫn duy trì tô sáng cú pháp và xác thực phù hợp. Những người khác lo lắng rằng việc trộn lẫn mã và cấu hình vi phạm các nguyên tắc kiến trúc phần mềm tốt.

Cấu hình là khó khăn, công cụ hiếm khi là vấn đề (ít nhất là theo kinh nghiệm của tôi).

Các cách tiếp cận thay thế thu hút sự chú ý

Cuộc thảo luận về KSON đã làm nổi bật các cách tiếp cận thay thế khác nhau cho quản lý cấu hình. Một số nhà phát triển ủng hộ việc sử dụng các ngôn ngữ lập trình thực tế như Python hoặc TypeScript cho cấu hình, cho rằng điều này cung cấp công cụ tốt hơn và an toàn kiểu. Những người khác chỉ ra các giải pháp hiện có như JSON5 , KDL hoặc Dhall như những lựa chọn thay thế trưởng thành hơn.

Một số người bình luận lưu ý rằng thách thức cơ bản không phải là cú pháp của các tệp cấu hình, mà là cấu trúc và đặt tên của chính các tùy chọn cấu hình. Tên trường rõ ràng và xác thực dữ liệu phù hợp thường quan trọng hơn định dạng tệp cơ bản.

So sánh KSON với các lựa chọn thay thế

  • KSON: Tập cha của JSON , hỗ trợ ngôn ngữ nhúng, tích hợp IDE , không nhạy cảm với khoảng trắng
  • YAML: Được áp dụng rộng rãi, nhạy cảm với khoảng trắng, dễ gặp lỗi phân tích cú pháp
  • JSON5: Tập cha của JSON , hỗ trợ chú thích, đơn giản hơn KSON
  • TOML: Cú pháp tối giản, khả năng lồng ghép hạn chế
  • KDL: Mô hình dữ liệu giống XML , không tương thích với JSON
  • Dhall: Ngôn ngữ hàm, kiểu dữ liệu mạnh, đường cong học tập dốc

Khoảng trống triển khai hạn chế việc áp dụng

Ngoài các lo ngại về bảo mật, KSON hiện tại có hỗ trợ nền tảng hạn chế và không xử lý tốt việc biên dịch chéo. Thư viện được biên dịch, mặc dù nhỏ hơn mong đợi ở mức 2MB, vẫn được coi là nặng theo tiêu chuẩn của một số cộng đồng ngôn ngữ.

Các nhà duy trì dự án thừa nhận những hạn chế này và bày tỏ hy vọng về các triển khai gốc trong các ngôn ngữ lập trình khác nhau khi phát triển tiến triển. Tuy nhiên, sự phụ thuộc hiện tại vào triển khai Kotlin tạo ra rào cản cho việc áp dụng trong nhiều môi trường.

Trong khi tầm nhìn của KSON về cấu hình-như-UI đại diện cho một cách tiếp cận thú vị đối với một vấn đề phổ biến, phản ứng sớm từ cộng đồng cho thấy rằng các lo ngại về bảo mật và sự mơ hồ cú pháp có thể hạn chế việc áp dụng cho đến khi những vấn đề cơ bản này được giải quyết.

Tham khảo: Configuration files are user interfaces