QuickJS-emscripten : QuickJS를 WASM으로 컴파일하여 실행하기
(github.com/justjake)- Figma가 플러그인을 실행할 때 보안 취약점을 없애기 위해 사용하는 방법
- Fabrice Bellard가 C로 작성한 QuickJS를 WebAssembly로 컴파일하고 JavaScript/TypeScript 바인딩을 제공
- ES2020 수준의 자바스크립트를 안전하게 실행 가능
- QuickJS 런타임 내부의 값을 생성하고 조작
- 호스트의 함수를 QuickJS 안에서 이용
- Asyncify : Synchronous 한 C/C++ 코드를 Asynchronous 한 JavaScript 코드에서 호출 및 C 코드내에서 비동기 JS 코드의 실행이 끝나기를 대기 가능
웹상에서 JS 플러그인을 운영하는 시스템들에게는 보안상 굉장히 훌륭한 방식이라고 생각됩니다.
Ryan Dahl의 JavaScript Containers에 대한 생각 에도 연결되는 것 같고요.
QuickJS Javascript Engine - 작고 빠르고 임베드 가능한 자바스크립트 엔진
Figma 의 An update on plugin security
이와 비슷하지만 좀 더 간단한 API로 구현된 코드 define-function : quick.js based sandbox