စတန်းဖို့ဒ် တက္ကသိုလ်၊ San Diego ရှိ ကယ်လီဖိုးနီးယား တက္ကသိုလ်နှင့် Austin ရှိ Texas တက္ကသိုလ်တို့မှ သုတေသီများ ဖွံ့ဖြိုးသည်။ ကိရိယာများ RLBoxfunction libraries များရှိ အားနည်းချက်များကို ပိတ်ဆို့ရန် အပိုထပ်ဆောင်းအထီးကျန်အလွှာအဖြစ် အသုံးပြုနိုင်သည်။ RLBox သည် developer များ၏ ထိန်းချုပ်မှုအောက်တွင် မရှိသော မယုံကြည်ရသော ပြင်ပအဖွဲ့အစည်း စာကြည့်တိုက်များ၏ လုံခြုံရေးပြဿနာကို ဖြေရှင်းရန် ရည်ရွယ်သည်၊ သို့သော် အားနည်းချက်များသည် ပင်မပရောဂျက်ကို အလျှော့ပေးနိုင်သည်။
Mozilla ကုမ္ပဏီ အစီအစဉ်များ စာကြည့်တိုက်လုပ်ဆောင်မှုကို သီးခြားခွဲထုတ်ရန် Firefox 74 နှင့် macOS တည်ဆောက်မှုများတွင် RLBox ကို အသုံးပြုပါ။ graphiteဖောင့်များကို တင်ဆက်ရန် တာဝန်ရှိသည်။ သို့သော်၊ RLBox သည် Firefox အတွက် သီးခြားမဟုတ်သည့်အပြင် မတရားသောပရောဂျက်များတွင် မည်သည့်စာကြည့်တိုက်ကိုမဆို သီးခြားခွဲထုတ်ရန် အသုံးပြုနိုင်သည်။ တိုးတက်မှုများ RLBox ကူးစက်ပျံ့နှံ့သည် MIT လိုင်စင်အောက်တွင်။ RLBox သည် လက်ရှိတွင် Windows ပံ့ပိုးမှုဖြင့် Linux နှင့် macOS ပလပ်ဖောင်းများကို ပံ့ပိုးပေးပါသည်။
Механизм RLBox ၏အလုပ်သည် သီးခြားစာကြည့်တိုက်တစ်ခု၏ C/C++ ကုဒ်ကို အနိမ့်အဆင့် အလယ်အလတ် WebAssembly ကုဒ်အဖြစ် စုစည်းထားခြင်းဖြစ်ပြီး၊ ထို့နောက် WebAssembly module တစ်ခုအနေဖြင့် ဒီဇိုင်းထုတ်ထားပြီး၊ ဤ module နှင့်သာ သက်ဆိုင်သည့် ခွင့်ပြုချက်များ (ဥပမာ၊ စာကြည့်တိုက်တစ်ခု၊ ကြိုးများကိုလုပ်ဆောင်ခြင်းအတွက် ကွန်ရက်ပေါက်ပေါက် သို့မဟုတ် ဖိုင်ကို ဖွင့်နိုင်မည်မဟုတ်ပါ)။ C/C++ ကုဒ်ကို WebAssembly သို့ပြောင်းခြင်းကို အသုံးပြု၍ ပြီးပါပြီ။ wasi-sdk.
တိုက်ရိုက်လုပ်ဆောင်မှုအတွက်၊ WebAssembly module ကို compiler သုံးပြီး စက်ကုဒ်အဖြစ် စုစည်းထားသည်။ Lucet နှင့် အခြား အပလီကေးရှင်း၏ မှတ်ဉာဏ်မှ သီးခြား "nanoprocess" တွင် လုပ်ဆောင်သည်။ Lucet compiler သည် JIT အင်ဂျင်ကဲ့သို့တူညီသောကုဒ်ပေါ်တွင်အခြေခံသည်။ ရေနံချောင်းWebAssembly ကိုလုပ်ဆောင်ရန် Firefox တွင်အသုံးပြုသည်။
စုစည်းထားသော module သည် သီးခြားမှတ်ဉာဏ်ဧရိယာတွင် လုပ်ဆောင်နေပြီး ကျန်လိပ်စာနေရာများသို့ ဝင်ရောက်ခွင့်မရှိပါ။ ဒစ်ဂျစ်တိုက်ရှိ အားနည်းချက်တစ်ခုအား အသုံးချပါက တိုက်ခိုက်သူသည် အကန့်အသတ်ရှိမည်ဖြစ်ပြီး ပင်မလုပ်ငန်းစဉ်၏ မှတ်ဉာဏ်ဧရိယာများကို ဝင်ရောက်ကြည့်ရှုနိုင်မည်မဟုတ်ပါ သို့မဟုတ် သီးခြားပတ်ဝန်းကျင်ပြင်ပတွင် လွှဲပြောင်းထိန်းချုပ်မှုများကို ဆောင်ရွက်နိုင်မည်မဟုတ်ပေ။
အဆင့်မြင့်အချက်အလက်များကို ဆော့ဖ်ဝဲရေးသားသူများအတွက် ပေးထားသည်။ API ကိုအထီးကျန်မုဒ်တွင် စာကြည့်တိုက်လုပ်ဆောင်ချက်များကို ခေါ်ဆိုနိုင်စေပါသည်။ WebAssembly handlers များသည် အပိုအရင်းအမြစ်များမရှိသလောက်ဖြစ်ပြီး ၎င်းတို့နှင့် အပြန်အလှန်တုံ့ပြန်မှုသည် သာမန်လုပ်ဆောင်ချက်များကိုခေါ်ဆိုခြင်းထက် များစွာနှေးကွေးသည်မဟုတ်ပါ (စာကြည့်တိုက်လုပ်ဆောင်ချက်များကို မူရင်းကုဒ်ပုံစံဖြင့် လုပ်ဆောင်ပြီး သီးခြားပတ်ဝန်းကျင်နှင့် အပြန်အလှန်တုံ့ပြန်မှုအတွင်း ဒေတာကူးယူခြင်းနှင့် စစ်ဆေးသည့်အခါတွင်သာ ကုန်ကျစရိတ်များ တက်လာသည်)။ သီးခြားစာကြည့်တိုက်လုပ်ဆောင်ချက်များကို တိုက်ရိုက်ခေါ်ဆို၍မရသည့်အပြင် အသုံးပြု၍ ဝင်ရောက်အသုံးပြုရပါမည်။
အလွှာ invoke_sandbox_function()။
တစ်ဖန်၊ ဒစ်ဂျစ်တိုက်မှ ပြင်ပလုပ်ဆောင်ချက်များကို ခေါ်ဆိုရန် လိုအပ်ပါက၊ ဤလုပ်ဆောင်ချက်များကို register_callback နည်းလမ်းကို အသုံးပြု၍ အတိအလင်း သတ်မှတ်ရပါမည် (ပုံမှန်အားဖြင့်၊ RLBox သည် လုပ်ဆောင်ချက်များသို့ ဝင်ရောက်ခွင့်ကို ပေးပါသည်။ စံစာကြည့်တိုက်) မမ်မိုရီဘေးကင်းမှုသေချာစေရန်၊ ကုဒ်လုပ်ဆောင်မှု သီးခြားခွဲထုတ်ခြင်းသည် မလုံလောက်သည့်အပြင် ပြန်ပေးသောဒေတာစီးကြောင်းများကိုလည်း စစ်ဆေးရန် လိုအပ်ပါသည်။
သီးခြားပတ်ဝန်းကျင်တွင် ထုတ်ပေးသောတန်ဖိုးများကို ယုံကြည်ရထိုက်သူအဖြစ် မှတ်သားထားပြီး အကန့်အသတ်ဖြင့် အသုံးပြုထားသည်။ အစွန်းအထင်းများ နှင့် "သန့်ရှင်းရေး" အတွက်သူတို့လိုအပ်သည်။ အတည်ပြုခြင်း နှင့် application memory သို့ကူးယူခြင်း။
သန့်ရှင်းရေးမလုပ်ဘဲ၊ ပုံမှန်ဒေတာလိုအပ်သော အကြောင်းအရာတစ်ခုတွင် မသန့်ရှင်းသောဒေတာကို အသုံးပြုရန်ကြိုးစားခြင်းသည် compile လုပ်ချိန်၌ အမှားအယွင်းများကို ဖြစ်ပေါ်စေပါသည်။ သေးငယ်သော လုပ်ဆောင်ချက် အကြောင်းပြချက်များ၊ ပြန်ပို့သည့် တန်ဖိုးများနှင့် ဖွဲ့စည်းပုံများကို လုပ်ငန်းစဉ်မှတ်ဉာဏ်နှင့် sandbox မမ်မိုရီကြားတွင် ကူးယူခြင်းဖြင့် ဖြတ်သန်းပါသည်။ ကြီးမားသောဒေတာအတွဲများအတွက်၊ မမ်မိုရီကို သီးခြားပတ်ဝန်းကျင်တွင် ခွဲဝေပေးထားပြီး တိုက်ရိုက် sandbox-reference pointer ကို ပင်မလုပ်ငန်းစဉ်သို့ ပြန်ပို့ပေးပါသည်။
source: opennet.ru