▲GN⁺ 2024-07-08 | parent | ★ favorite | on: HN 공개: WebAssembly QuickJS 샌드박스에서 JavaScript 실행(github.com/sebastianwessel)Hacker News 의견 quickjs-emscripten 라이브러리의 저자가 라이브러리의 표준 라이브러리를 칭찬함 브라우저나 번들러에서 실행해봤는지 질문함 Webpack과 같은 번들러와의 호환성 문제를 지적함 보안 경고: 라이브러리가 게스트 코드가 호스트의 fetch 함수와 동일한 쿠키를 사용하여 fetch를 호출할 수 있게 함 신뢰할 수 없는 코드를 실행할 때 주의해야 함 quickjs-emscripten이 저수준이고 마법 같은 기능을 피하는 이유는 보안성을 보장하기 위함 신뢰할 수 없는 코드를 실행할 때 샌드박스와 API를 신중하게 감사해야 함 Figma의 플러그인 샌드박스 보안에 대한 블로그 포스트를 참고할 것을 권장함 이전 직장에서 quickjs-emscripten 사용 중 많은 "segmentation faults"와 오류를 경험했음 프로젝트가 중단되었고, 다시 한다면 공식적으로 지원되는 wasm 번들을 사용할 것임 JavaScript를 샌드박스하는 여러 방법이 있음 DOM 접근을 샌드박스하는 방법이 있는지 질문함 iframes가 유일한 기술이지만 무겁고 느림 플러그인을 호스팅하는 앱을 작성 중이며, 플러그인에 DOM 접근을 허용하면 문제가 생길 수 있음 브라우저에서 실행 가능한지 질문함 지원되는 환경에 대한 언급을 찾을 수 없음 quickjs를 사용해봤으나 최종적으로 isolated-vm을 선택했음 두 라이브러리 모두 보안 요구사항을 충족했으나, isolated-vm이 성능 면에서 더 우수했음 다른 JS 샌드박스 라이브러리의 저자가 quickjs-emscripten 접근법을 흥미롭게 생각함 JS-in-JS 또는 JS-in-WASM이 높은 수준의 격리를 제공한다고 언급함 Node.js가 격리와 샌드박싱을 염두에 두고 설계되지 않았음을 지적함 createRuntime이 fetch 외에 호스트 환경에 대한 호출을 정의할 수 있는지 질문함 브라우저 지원이 유용할 것이라고 언급함 이 라이브러리를 통해 사용자가 제공한 JS 코드를 실행할 수 있을 것이라고 생각함 번들러를 샌드박스 환경에서 실행하는 방법에 대한 추천을 요청함 QuickJS의 성능이 호스트 JS VM과 경쟁할 수 없음을 언급함 오래된 C 인터프리터나 JavaScript로 구현된 인터프리터보다는 빠름 quickjs-emscripten의 고수준 래퍼를 작업 중이었음 quickjs-emscripten의 API가 quickjs의 C API와 매우 유사하여 사용하기 어려움 require() 지원 구현이 어려움 모듈 파일을 메모리 파일 시스템에 미리 로드하는 방법을 사용함 quickjs-emscripten-sync 라이브러리가 호스트와 게스트 함수의 자동 동기화를 제공하는데, 이는 큰 공격 표면이 될 수 있음 샌드박스를 탈출할 가능성에 대해 우려함 wasm으로 컴파일되었기 때문에 브라우저에서 실행 가능한지 질문함 쿠키를 첨부하지 않고 fetch 요청을 할 수 있는지 궁금해함
Hacker News 의견
quickjs-emscripten 라이브러리의 저자가 라이브러리의 표준 라이브러리를 칭찬함
fetch함수와 동일한 쿠키를 사용하여fetch를 호출할 수 있게 함이전 직장에서 quickjs-emscripten 사용 중 많은 "segmentation faults"와 오류를 경험했음
JavaScript를 샌드박스하는 여러 방법이 있음
브라우저에서 실행 가능한지 질문함
quickjs를 사용해봤으나 최종적으로 isolated-vm을 선택했음
다른 JS 샌드박스 라이브러리의 저자가 quickjs-emscripten 접근법을 흥미롭게 생각함
createRuntime이fetch외에 호스트 환경에 대한 호출을 정의할 수 있는지 질문함이 라이브러리를 통해 사용자가 제공한 JS 코드를 실행할 수 있을 것이라고 생각함
QuickJS의 성능이 호스트 JS VM과 경쟁할 수 없음을 언급함
quickjs-emscripten의 고수준 래퍼를 작업 중이었음
require()지원 구현이 어려움quickjs-emscripten-sync 라이브러리가 호스트와 게스트 함수의 자동 동기화를 제공하는데, 이는 큰 공격 표면이 될 수 있음
wasm으로 컴파일되었기 때문에 브라우저에서 실행 가능한지 질문함