JavaScriptのSandboxing技術
利用者にJavaScriptを投稿してもらうみたいな時に安全に実行したい
もっというと上のエディタコンポーネントのロジックをユーザ投稿型にしてみたいが、安全に実行する方法が知りたい
ロジックの実行のトリガは決め打ちのインターフェースにして、処理をWeb Workerで閉じ込めるとかそういうのを考えたが Web Workerはサンドボックス用のものではない
みます🙏inajob.icon
速度は(wasmの仕様上JIT化ができないので)あまり期待できないかもbsahd.icon
現状ほぼ確実なのは「別のサブドメインにしたiframe内にコードを配置する」
ブラウザ側のJITが無効なら...
二重にインタプリタするのですごく遅くなる
quickjsはemscriptenでjsで動く?
wasm非対応環境を考慮する
partytown...
xhrかぁ
パケット組み立てとかオーバーヘッドありそう
モダンなJavaScriptに慣れ親しんだ我々にとってはとても「レガシー」でかつ積極的な活用は忌避すべきとされている 「同期的なXMLHttpRequest呼び出し」 と、Workerよりはまだ環境制約は多いが同じくモダンなWeb標準である 「Service Worker」 を使って解決したところが大変おもしろい
ヤバいのがきたなwnishio.icon
ただ、OS内のパケットキュー、(OS内の)ネットワークデバイスを経由したりするのがネックかなbsahd.icon
XMLHttpRequest は同期と非同期通信の両方に対応しています。しかし、一般的には性能上の理由により、同期リクエストより非同期リクエストを選択すべきです。
同期リクエストが通常、実行をブロックしない稀な例として、 Worker 内での XMLHttpRequest の利用があります。
JavaScript.icon