सैंडबॉक्सिंग और अनुमतियाँ
WASM मॉड्यूल की क्षमताओं को और सीमित करने तथा होस्ट परिवेशों में अनुमतियाँ प्रबंधित करने की रणनीतियाँ लागू करें
सैंडबॉक्सिंग और अनुमतियाँ, CoddyKit पर उच्च-प्रदर्शन अनुप्रयोगों के लिए WebAssembly (WASM) का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह उच्च-प्रदर्शन अनुप्रयोगों के लिए WebAssembly (WASM) सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। उच्च-प्रदर्शन अनुप्रयोगों के लिए WebAssembly (WASM) पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
WASM का सुरक्षा सैंडबॉक्स
WebAssembly (WASM) को सुरक्षा को केंद्र में रखकर डिज़ाइन किया गया है। यह एक कड़े नियंत्रण वाले वातावरण में काम करता है, जिसे sandbox कहा जाता है।
यह sandboxing व्यवस्था WASM code को होस्ट सिस्टम से अलग रखती है और उसे संवेदनशील संसाधनों तक सीधे पहुँचने या अपने निर्धारित क्षेत्र के बाहर मनमाने operations करने से रोकती है।
अंतर्निहित प्रतिबंध
डिफ़ॉल्ट रूप से, WASM मॉड्यूल को सामान्य system capabilities, जैसे निम्नलिखित, तक सीधी पहुँच नहीं होती:
- होस्ट का file सिस्टम
- नेटवर्क interfaces
- वातावरण variables
- अपनी linear memory के बाहर की मनमानी Memory
यह कड़ा अलगाव एक मूलभूत सुरक्षा सुविधा है, जो WASM को अविश्वसनीय code चलाने के लिए सुरक्षित विकल्प बनाता है।
Imports के ज़रिए क्षमताएँ देना
यदि किसी WASM मॉड्यूल को logging, किसी file तक पहुँचने या नेटवर्क अनुरोध करने जैसे कार्य करने हों, तो वह उन्हें सीधे नहीं कर सकता। इसके बजाय, उसे अपने होस्ट वातावरण से फ़ंक्शन import करने पड़ते हैं।
होस्ट, जैसे वेब ब्राउज़र का JavaScript engine या WASI runtime, द्वारपाल की भूमिका निभाता है और इन क्षमताओं को स्पष्ट रूप से उपलब्ध कराता है। इससे होस्ट को WASM मॉड्यूल की अनुमतियों पर पूरा नियंत्रण मिलता है।
WASM होस्ट फ़ंक्शनों का अनुरोध करता है
यहाँ बताया गया है कि Rust से compile किया गया WASM मॉड्यूल होस्ट फ़ंक्शन की अपनी आवश्यकता कैसे घोषित कर सकता है। यह अपेक्षा करता है कि होस्ट env मॉड्यूल के भीतर host_log नामक फ़ंक्शन उपलब्ध कराए।
/* src/lib.rs */
// Link to an imported function from the 'env' module
#[link(wasm_import_module = "env")]
extern "C" {
fn host_log(ptr: *const u8, len: usize);
}
#[no_mangle]
pub extern "C" fn log_message_from_wasm() {
let message = "Hello from WASM!";
let ptr = message.as_ptr();
let len = message.len();
unsafe {
// Call the imported host function
host_log(ptr, len);
}
}होस्ट अनुमति देता है या अस्वीकार करता है
JavaScript होस्ट यह तय करता है कि host_log फ़ंक्शन उपलब्ध कराया जाए या नहीं। यदि यह उपलब्ध कराया जाता है, तो WASM इसे call कर सकता है। यदि नहीं, तो WASM मॉड्यूल instantiate होने में विफल हो जाएगा और permission लागू रहेगी।
इस उदाहरण को चलाकर देखिए:
// host.js
async function loadWasmWithPermission() {
const wasmBytes = await fetch("log_module.wasm").then(res => res.arrayBuffer());
// Define the imports object for WASM
const imports = {
env: {
host_log: (ptr, len) => {
// This function is provided by JS to WASM
const memory = instance.exports.memory;
const data = new Uint8Array(memory.buffer, ptr, len);
const text = new TextDecoder("utf-8").decode(data);
console.log(`WASM says: ${text}`);
}
}
};
try {
const { instance } = await WebAssembly.instantiate(wasmBytes, imports);
instance.exports.log_message_from_from_wasm(); // Call the WASM function
} catch (e) {
console.error("WASM instantiation failed:", e);
}
}
loadWasmWithPermission();WASM Memory को नियंत्रित करना
फ़ंक्शनों के अलावा, होस्ट वातावरण WASM मॉड्यूल की linear memory को भी नियंत्रित करता है। किसी मॉड्यूल को instantiate करते समय होस्ट initial और maximum Memory size, 64KB pages में, निर्दिष्ट कर सकता है।
इससे कोई दुर्भावनापूर्ण या त्रुटिपूर्ण WASM मॉड्यूल अत्यधिक Memory इस्तेमाल करके होस्ट एप्लिकेशन को प्रभावित नहीं कर पाता।
// host.js
async function loadWasmWithMemory() {
// Create a WebAssembly.Memory object
const memory = new WebAssembly.Memory({ initial: 1, maximum: 2 });
// 1 page (64KB) initial, max 2 pages (128KB)
const wasmBytes = await fetch("memory_user.wasm").then(res => res.arrayBuffer());
const imports = {
env: {
memory: memory // Pass the controlled memory object to WASM
}
};
const { instance } = await WebAssembly.instantiate(wasmBytes, imports);
console.log("WASM module loaded with controlled memory.");
// WASM can now access and grow this memory up to 2 pages
}
loadWasmWithMemory();न्यूनतम विशेषाधिकार का सिद्धांत
WASM के साथ काम करते समय एक महत्वपूर्ण सुरक्षा अभ्यास न्यूनतम विशेषाधिकार का सिद्धांत है।
इसका अर्थ है कि आपको WASM मॉड्यूल को उसके निर्धारित कार्य के लिए बिल्कुल आवश्यक permissions और resources ही देने चाहिए, उससे अधिक नहीं। पहुँच को न्यूनतम रखने से हमले की सतह और कमज़ोरियों का संभावित प्रभाव घटता है।
ब्राउज़र से आगे: WASI और होस्ट क्षमताएँ
वेब ब्राउज़र के बाहर के वातावरण, जैसे सर्वर या IoT devices, के लिए WebAssembly System Interface (WASI) system-level access को standardize करता है।
WASI के साथ भी, underlying WASI runtime, जैसे Wasmtime या Wasmer, होस्ट ही होता है। वह permissions लागू करता रहता है और तय करता है कि WASI मॉड्यूल किन file paths, network sockets या environment variables तक पहुँच सकता है।
सुरक्षित इंटरैक्शन के सुझाव
सुरक्षित WASM अनुप्रयोग बनाने के लिए:
- Imports कम से कम रखें: केवल वे host functions उपलब्ध कराएँ जो वास्तव में आवश्यक हों।
- Inputs validate करें: injection या buffer overflow जैसी समस्याओं को रोकने के लिए WASM से JavaScript और इसके विपरीत भेजे गए data को हमेशा validate करें।
- Memory boundaries: उपयुक्त initial और maximum Memory limits निर्धारित करें।
- विश्वसनीय modules: WebAssembly मॉड्यूल केवल विश्वसनीय और सत्यापित sources से load करें।
Permission की जाँच
मान लीजिए कि किसी WebAssembly मॉड्यूल को किसी विशेष file से पढ़ने की आवश्यकता है। इस capability को देने या अस्वीकार करने के लिए मुख्य रूप से कौन-सी entity ज़िम्मेदार है?
पुनरावलोकन: सुरक्षित WASM
हमने सीखा कि WebAssembly मॉड्यूल एक सुरक्षित sandbox में काम करते हैं और किसी भी बाहरी capability के लिए पूरी तरह होस्ट वातावरण पर निर्भर रहते हैं। सुरक्षा बनाए रखने और न्यूनतम विशेषाधिकार के सिद्धांत का पालन करने के लिए imports को manage करना और Memory को नियंत्रित करना महत्वपूर्ण है।
इन व्यवस्थाओं को समझने से आपको मज़बूत, उच्च-प्रदर्शन वाले और सुरक्षित WebAssembly अनुप्रयोग बनाने में मदद मिलेगी।
एआई शिक्षक के साथ उच्च-प्रदर्शन अनुप्रयोगों के लिए WebAssembly (WASM) सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 12
- पाठ
- 48
अक्सर पूछे जाने वाले प्रश्न
क्या “सैंडबॉक्सिंग और अनुमतियाँ” पाठ निःशुल्क है?
हाँ—“सैंडबॉक्सिंग और अनुमतियाँ” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और उच्च-प्रदर्शन अनुप्रयोगों के लिए WebAssembly (WASM) पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। उच्च-प्रदर्शन अनुप्रयोगों के लिए WebAssembly (WASM) पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“सैंडबॉक्सिंग और अनुमतियाँ” में मैं क्या सीखूँगा?
WASM मॉड्यूल की क्षमताओं को और सीमित करने तथा होस्ट परिवेशों में अनुमतियाँ प्रबंधित करने की रणनीतियाँ लागू करें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ उच्च-प्रदर्शन अनुप्रयोगों के लिए WebAssembly (WASM) का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या उच्च-प्रदर्शन अनुप्रयोगों के लिए WebAssembly (WASM) शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर उच्च-प्रदर्शन अनुप्रयोगों के लिए WebAssembly (WASM) शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“सैंडबॉक्सिंग और अनुमतियाँ” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस उच्च-प्रदर्शन अनुप्रयोगों के लिए WebAssembly (WASM) पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर उच्च-प्रदर्शन अनुप्रयोगों के लिए WebAssembly (WASM) पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- WASM सुरक्षा मॉडल
- सैंडबॉक्सिंग और अनुमतियाँ
- प्रोडक्शन परिनियोजन रणनीतियाँ
- आपूर्ति शृंखला सुरक्षा और मॉड्यूल सत्यापन