பாதுகாப்பான சூழல் தனிமைப்படுத்தலுக்காக ஜாவாஸ்கிரிப்டில் உலகளாவிய இது மாஸ்டரிங்
வெளிப்புற அல்லது நம்பத்தகாத உள்ளீடுகளுடன் தொடர்பு கொள்ளும் ஜாவாஸ்கிரிப்ட் குறியீட்டை எழுதும் போது உலகளாவிய பொருளுக்கு அங்கீகரிக்கப்படாத அணுகலைத் தடுப்பது அவசியம். இது உங்கள் சுற்றுப்புறத்தின் பாதுகாப்பு மற்றும் நிலைத்தன்மைக்கு உத்தரவாதம் அளிக்கிறது. உலகளாவிய நோக்கத்தைக் கட்டுப்படுத்துவதற்கான ஒரு சமகால முறை வழியாகும் பொருள்.
தி பொருள். முக்கியமாக, மறுகட்டமைக்கக்கூடியது, சாண்ட்பாக்ஸ்கள் அல்லது கட்டுப்படுத்தப்பட்ட செயல்படுத்தல் சூழல்களை தற்காலிகமாக மேலெழுதுவதன் மூலம் உருவாக்கலாம்.
டெவலப்பர்கள் இந்த செயல்பாட்டின் மூலம் குறியீடு செயல்படுத்தலை தனிமைப்படுத்த முடியும், இது நம்பத்தகாத உள்ளீடுகளுடன் பணிபுரியும் போது மிகவும் பயனுள்ளதாக இருக்கும். ஒரு தனித்துவமான உலகளாவிய சூழலை நிறுவுவதன் மூலம் குறியீட்டை சாண்ட்பாக்ஸ் செய்யலாம், இது உலகளாவிய பொருளின் மீதமுள்ள வெளிப்பாட்டைத் தடுக்கும் அதே வேளையில் முன்னரே தீர்மானிக்கப்பட்ட மாறிகளின் தொகுப்பை மட்டுமே அணுக அனுமதிக்கும்.
எப்படி பயன்படுத்துவது என்பதை இந்த கட்டுரை விவாதிக்கும் மற்றும் ES6 தொகுதிகள் ஒரு சாண்ட்பாக்ஸை உருவாக்க. ஒழுங்குபடுத்தப்பட்ட அமைப்பில் பாதுகாப்பான குறியீட்டைச் செயல்படுத்துவதற்கு உத்தரவாதம் அளிக்க, உலகளாவிய சூழலை தற்காலிகமாக மாற்றும் கருத்தாக்கத்தின் ஆதாரத்தை நான் நிரூபிக்கிறேன்.
கட்டளை | பயன்பாட்டின் உதாரணம் |
---|---|
globalThis | myContext = உலகளாவிய இது; - உலகளாவிய பொருளுக்கு உலகளாவிய குறிப்பை வழங்கும் தனித்துவமான பொருள். இங்கே, ஒரு சாண்ட்பாக்ஸைப் பின்பற்றுவதற்கும் ஒரு தனித்துவமான உலகளாவிய நோக்கத்தை நிறுவுவதற்கும் மேலெழுதப்பட்டுள்ளது. |
Proxy | mySandbox = புதிய ப்ராக்ஸி (sandboxHandler, myContext); - AAன் பொருளின் செயல்பாடுகளை ப்ராக்ஸி மூலம் இடைமறித்து மறுவரையறை செய்யலாம்; இந்த எடுத்துக்காட்டில், சாண்ட்பாக்ஸ் சூழல் மாறிகளுக்கான அணுகலைக் கட்டுப்படுத்தலாம். |
get | get: (target, prop) =>பெற: (இலக்கு, முட்டு) => { ... } - தி ப்ராக்ஸி இடைமறிப்புகளில் உள்ள ட்ராப், சாண்ட்பாக்ஸ் பொருளின் பண்புகளை அணுக முயற்சிக்கிறது, அனுமதிக்கப்பட்ட பண்புகள் மட்டுமே திரும்பப் பெறப்படுவதை உறுதிசெய்து, வரையறுக்கப்படாதவற்றுக்கு பிழைகளை ஏற்படுத்துகிறது. |
finally | கடைசியாக Globalஇது savedGlobalக்கு சமம்; - செயல்படுத்தும் போது பிழை ஏற்பட்டாலும் இல்லாவிட்டாலும், தி அசல் உலகளாவிய சூழலை மீட்டெடுப்பதன் மூலம் உலகளாவிய பொருளின் ஒருமைப்பாடு பராமரிக்கப்படுவதை பிளாக் உறுதி செய்கிறது. |
ReferenceError | 'சொத்து வரையறுக்கப்படவில்லை'; புதிய ReferenceError எறியுங்கள்; - ஏ எதிர்பாராத அணுகலைத் தடுப்பதன் மூலம் பாதுகாப்பை மேம்படுத்துவதன் மூலம், சாண்ட்பாக்ஸில் உள்ள வரையறுக்கப்படாத மாறிகளை அணுகுவதற்கான முயற்சி மேற்கொள்ளப்படும் நிகழ்வுகளைக் கையாள கைமுறையாக வீசப்படுகிறது. |
IIFE | ((globalThis) =>((globalThis) => { ... })(globalThis); - அன் (உடனடியாக செயல்படுத்தப்பட்ட செயல்பாடு வெளிப்பாடு) ஒரு உள்ளூர் நோக்கத்தை உருவாக்க பயன்படுகிறது, சாண்ட்பாக்ஸ் செய்யப்பட்ட குறியீட்டை இயக்கும் போது உலகளாவிய பொருளை எதிர்பாராத வெளிப்பாடுகளிலிருந்து பாதுகாக்கிறது. |
try...catch | 'சொத்து வரையறுக்கப்படவில்லை'; புதிய ReferenceError எறியுங்கள்; - ஏ எதிர்பாராத அணுகலைத் தடுப்பதன் மூலம் பாதுகாப்பை மேம்படுத்தி, சாண்ட்பாக்ஸில் உள்ள வரையறுக்கப்படாத மாறிகளை அணுகுவதற்கான முயற்சி மேற்கொள்ளப்படும் போது, கைமுறையாகக் கையாளப்படும். |
savedGlobal | 'சொத்து வரையறுக்கப்படவில்லை'; புதிய ReferenceError எறியுங்கள்; - ஏ எதிர்பாராத அணுகலைத் தடுப்பதன் மூலம் பாதுகாப்பை மேம்படுத்தி, சாண்ட்பாக்ஸில் உள்ள வரையறுக்கப்படாத மாறிகளை அணுகுவதற்கான முயற்சி மேற்கொள்ளப்படும் போது, கைமுறையாகக் கையாளப்படும். |
ES6 தொகுதிகள் மற்றும் குளோபல்திஸ் மூலம் பாதுகாப்பான உலகளாவிய சூழலை உருவாக்குதல்
வழங்கப்படும் ஸ்கிரிப்ட்களின் முதன்மையான குறிக்கோள் ஒரு உலகளாவிய பொருள் எங்கே () தற்காலிகமாக மாற்றப்பட்டது. இந்த முறையானது அசல் உலகளாவிய பொருளிலிருந்து முக்கியமான மாறிகள் அல்லது பண்புகளை மறைத்து வைக்க உதவுகிறது, இது வெளிப்புற அல்லது நம்பத்தகாத குறியீட்டுடன் பணிபுரியும் போது மிகவும் உதவியாக இருக்கும். உலகளாவிய நோக்கத்தை மறுவரையறை செய்வது, சாண்ட்பாக்ஸில் அறிவிக்கப்பட்ட பண்புகளை மட்டுமே அணுக குறியீட்டை கட்டுப்படுத்துவதன் மூலம் மாறி அணுகல் மீதான சிறந்த கட்டுப்பாட்டை உறுதி செய்கிறது.
அசல் சேமிக்கிறது ஒரு உள்ளூர் மாறியாக () என்பது முதல் எடுத்துக்காட்டில் செயல்பாட்டின் முதல் படியாகும். இது ஒரு முக்கியமான படியாகும், ஏனெனில் சாண்ட்பாக்ஸ் செய்யப்பட்ட குறியீடு செயல்படுத்தப்பட்டவுடன், உலகளாவிய சூழல் மீட்டமைக்கப்படும். உலகளாவிய சூழலை ஒரு புதிய பொருளுடன் மாற்றும்போது (இங்கே, ), ஸ்கிரிப்ட் மாறிகளை மீட்டெடுக்க முயற்சிக்கிறது (இங்கே, அ மற்றும் ) இந்த சாண்ட்பாக்ஸில் அமைந்துள்ளது. குறிப்பிட்டுள்ள முதல் இதழில் காட்டப்பட்டுள்ளபடி, குறிப்பிட்ட மாறிகள் குறிப்பிடப்படாவிட்டால், குறிப்புப் பிழை எழுப்பப்படும். கடைசியாக, தி செயல்பாட்டின் போது, உலகளாவிய சூழல் எப்பொழுதும் மீட்டமைக்கப்படுவதை பிளாக் உறுதிசெய்கிறது, பயன்பாட்டின் பிற பகுதிகளில் எதிர்பாராத விளைவுகளைத் தவிர்க்கிறது.
இரண்டாவது அணுகுமுறை a ஐப் பயன்படுத்துகிறது இந்த நடைமுறையை மேம்படுத்த வேண்டும். ஜாவாஸ்கிரிப்டில், ஒரு ப்ராக்ஸி புரோகிராமர்களுக்கு பொருள்களின் மீது எடுக்கப்பட்ட செயல்களை மீண்டும் விளக்கவும் இடைமறிக்கவும் உதவுகிறது. இந்த ஸ்கிரிப்ட்டிற்குள், ப்ராக்ஸி சொத்து அணுகலுக்கான கோரிக்கைகளை கண்காணித்து, விரும்பிய சொத்து சாண்ட்பாக்ஸ் பொருளில் உள்ளதா என்பதை தீர்மானிக்கிறது. ஏ வெளிப்புற மாறிகள் அணுக முடியாது என்று உத்தரவாதம் அளித்து, சொத்தை கண்டுபிடிக்க முடியாத நிலையில் தூக்கி எறியப்படுகிறது. இதன் காரணமாக, உலகளாவிய நோக்கத்தைப் பாதுகாப்பதற்கும் மாறும் அணுகலை டைனமிக் சாண்ட்பாக்ஸ் அமைப்பில் நிர்வகிப்பதற்கும் இது ஒரு வலுவான விருப்பமாகும்.
சாண்ட்பாக்ஸ் இயக்கத்தை முழுவதுமாக தனிமைப்படுத்த, மூன்றாவது ஸ்கிரிப்ட் IIFE (உடனடியாக செயல்படுத்தப்பட்ட செயல்பாடு வெளிப்பாடு) பயன்படுத்துகிறது. வெளிப்புறக் குறியீடு உலகளாவிய சூழலை அணுகுவது அல்லது குறுக்கிடுவது கடினம், ஏனெனில் IIFE வடிவமானது முழுச் செயலையும் அதன் சொந்த உள்ளூர் நோக்கத்துக்குள் மறைக்கிறது. இந்த முறை மிகவும் பாதுகாப்பானது, ஏனெனில் இது உலகளாவியது வெளி உலகத்திற்கு வெளிப்படாது மற்றும் IIFE க்குள் மட்டுமே மாற்றப்படுகிறது. அனைத்து சாண்ட்பாக்ஸ் குறியீடுகளும் முற்றிலும் பிரிக்கப்பட்ட சூழலில் செயல்படும் என்று உத்தரவாதம் அளிப்பதன் மூலம், இது ஸ்கிரிப்ட்டின் செயல்பாட்டில் பாதுகாப்பையும் நிலைத்தன்மையையும் மேம்படுத்துகிறது.
உலகளாவிய ஜாவாஸ்கிரிப்ட் சூழலை நிர்வகிக்க ES6 தொகுதிகள் கொண்ட சாண்ட்பாக்ஸை உருவாக்குதல்
இந்த முறை மேலெழுதுகிறது ஜாவாஸ்கிரிப்ட் (ES6) ஐப் பயன்படுத்தி உலகளாவிய சூழலைப் பாதுகாப்பாகப் பராமரிக்கும் சாண்ட்பாக்ஸை உருவாக்க. இது முன்-இறுதி டைனமிக் பயன்பாடுகளுக்கான கருத்துக்கான நேரடியான ஆதாரத்தை வழங்குகிறது.
let myContext = { a: 1, b: 2 };
let f = () => {
let savedGlobal = globalThis; // Save the original globalThis
globalThis = myContext; // Overwrite globalThis with the sandbox context
try {
let result = a + b; // Attempt to access a and b within the sandbox
return result; // Return the calculated result
} catch (e) {
console.error(e); // Catch errors, such as reference errors
} finally {
globalThis = savedGlobal; // Restore the original global context
}
};
console.log(f());
மேம்படுத்தப்பட்ட தீர்வு: உலகளாவிய அணுகலை இடைமறிக்க ப்ராக்ஸியைப் பயன்படுத்துதல்
உலகளாவிய சூழல் அணுகலை இடைமறிக்க, பாதுகாப்பு மற்றும் மட்டுப்படுத்தலை மேம்படுத்த, ப்ராக்ஸி பொருளைப் பயன்படுத்துவதன் மூலம் இந்த நுட்பம் தற்செயலாக மாறி வெளிப்படுவதைத் தடுக்கிறது. ஜாவாஸ்கிரிப்ட் முன்-இறுதி மற்றும் பின்-இறுதி அமைப்புகளில் பயன்படுத்துவதற்கு ஏற்றது.
const myContext = { a: 1, b: 2 };
const sandboxHandler = {
get: (target, prop) => {
if (prop in target) {
return target[prop];
} else {
throw new ReferenceError(\`Property \${prop} is not defined\`);
}
}
};
let mySandbox = new Proxy(myContext, sandboxHandler);
let f = () => {
let savedGlobal = globalThis;
globalThis = mySandbox; // Overwrite with sandbox proxy
try {
let result = a + b; // Access sandbox variables safely
return result;
} catch (e) {
console.error(e);
} finally {
globalThis = savedGlobal; // Restore global context
}
};
console.log(f());
சிறந்த சூழல் தனிமைப்படுத்தலுக்கு IIFE உடன் தீர்வு
இந்த முறையானது உடனடியாக செயல்படுத்தப்பட்ட செயல்பாடு வெளிப்பாடு (IIFE) மூலம் சாண்ட்பாக்ஸ் செய்யப்பட்ட சூழலை முழுமையாக இணைக்கிறது. குறிப்பிட்ட சூழலில் இல்லாத மாறிகள் அணுகப்படவே இல்லை என்று உத்தரவாதம் அளிக்கிறது.
((globalThis) => {
const myContext = { a: 1, b: 2 };
const f = () => {
let result = myContext.a + myContext.b; // Access sandbox variables directly
return result;
};
console.log(f()); // Log the result of the sandboxed function
})(globalThis);
ஜாவாஸ்கிரிப்ட் சாண்ட்பாக்சிங்கில் தனிப்பயன் உலகளாவிய சூழலின் பயன்பாட்டை விரிவுபடுத்துதல்
பணியமர்த்துவதன் மற்றொரு நன்மை சாண்ட்பாக்சிங் சூழ்நிலையில். சாராம்சத்தில், எங்கள் எடுத்துக்காட்டில் காட்டப்பட்டுள்ளபடி, தனிப்பயன் சூழலுடன் உலகளாவிய பொருளை மேலெழுதும்போது, உங்கள் குறியீட்டின் முக்கியத்துவத்தை மாறிகளின் கட்டுப்படுத்தப்பட்ட தொகுப்பிற்கு மாற்றுகிறீர்கள். நம்பத்தகாத மூன்றாம் தரப்பு ஸ்கிரிப்ட்களை இயக்கும் போது அல்லது பெரிய ஆன்லைன் அப்ளிகேஷனின் தனித்துவமான மாட்யூல்களைப் பிரிக்கும் போது, இந்த உத்தியானது மாறிகளின் குறுக்கு-மாசுபாட்டைத் தடுப்பதில் குறிப்பாக உதவியாக இருக்கும்.
ஜாவாஸ்கிரிப்டில் உள்ள ES6 மாட்யூல் சிஸ்டத்தில் உள்ளமைக்கப்பட்ட ஸ்கோப்பிங் நுட்பங்கள் உள்ளன, அவை மாறிகளை ஓரளவு பிரிக்கின்றன என்பது மற்றொரு முக்கியமான உறுப்பு. மறுபுறம், பயன்படுத்தி இதைத் தாண்டிச் செல்ல நமக்கு உதவுகிறது. அசல் உலகளாவிய சூழலைப் பார்ப்பதிலிருந்து அணுக முடியாத ஸ்கிரிப்ட்களைத் தடுப்பதன் மூலம், இது பாதுகாப்பை வலுப்படுத்துவது மட்டுமல்லாமல், உலகளாவிய மாறிகளின் வேண்டுமென்றே மேலெழுதப்படுவதைத் தடுக்கவும் உதவுகிறது. தீங்கிழைக்கும் அல்லது தவறாக எழுதப்பட்ட குறியீட்டிலிருந்து பயன்பாடுகளைப் பாதுகாக்க இந்த முறை நன்றாக வேலை செய்கிறது.
ES6 தொகுதிகளை இணைத்தல் உங்கள் பயன்பாட்டின் எந்தக் கூறுகள் உலகளாவிய பொருளுக்கு அணுகலைக் கொண்டுள்ளன என்பதில் உங்களுக்கு நுணுக்கமான கட்டுப்பாடு தேவைப்படும் சூழ்நிலைகளில் பாதுகாப்பை மேலும் மேம்படுத்துகிறது. உலகளாவிய பொருளில் உள்ள குறிப்பிட்ட பண்புகளுக்கான அணுகலை வடிகட்டுவதன் மூலம், அனுமதிக்கப்பட்ட பண்புகளை மட்டுமே அணுக முடியும் என்பதை உறுதிப்படுத்த ப்ராக்ஸிகள் உங்களை அனுமதிக்கின்றன. பல குத்தகைதாரர் பயன்பாட்டில் உள்ள ஒவ்வொரு குத்தகைதாரரின் தரவும் மற்ற குத்தகைதாரர்களின் தரவிலிருந்து முற்றிலும் பிரிக்கப்பட வேண்டும். இந்த தீர்வு அளவிடக்கூடியது மற்றும் பல்வேறு பயன்பாட்டு நிகழ்வுகளுக்கு ஏற்றது.
- பங்கு என்ன ஜாவாஸ்கிரிப்டில்?
- 'சொத்து வரையறுக்கப்படவில்லை'; புதிய ReferenceError எறியுங்கள்; - ஏ எதிர்பாராத அணுகலைத் தடுப்பதன் மூலம் பாதுகாப்பை மேம்படுத்தி, சாண்ட்பாக்ஸில் உள்ள வரையறுக்கப்படாத மாறிகளை அணுகுவதற்கான முயற்சி மேற்கொள்ளப்படும் போது, கைமுறையாகக் கையாளப்படும்.
- ஜாவாஸ்கிரிப்டில் சாண்ட்பாக்சிங் ஏன் முக்கியமானது?
- உணர்திறன் மாறிகளைப் பாதுகாத்தல், உலகளாவிய பொருளை அணுகுவதில் இருந்து அங்கீகரிக்கப்படாத நிரல்களைக் கட்டுப்படுத்துதல் மற்றும் குறியீட்டைச் செயல்படுத்துவதைத் தனிமைப்படுத்துதல் ஆகியவை சாண்ட்பாக்சிங் மூலம் சாத்தியமாகும்.
- எப்படி செய்கிறது பொருள் சாண்ட்பாக்ஸ் பாதுகாப்பை மேம்படுத்துமா?
- ஏ சாண்ட்பாக்ஸ் சுற்றுச்சூழல் பாதுகாப்பிற்கான ஒரு பயனுள்ள கருவியாகும், ஏனெனில் இது சொத்து அணுகல்களை இடைமறித்து, முன் வரையறுக்கப்பட்ட பண்புகளுக்கு மட்டுமே அணுகலைக் கட்டுப்படுத்துகிறது.
- உலகளாவிய சூழல்களை தனிமைப்படுத்த ஒரு IIFE எவ்வாறு உதவ முடியும், அதன் அர்த்தம் என்ன?
- ஒரு IIFE (உடனடியாக செயல்படுத்தப்பட்ட செயல்பாடு வெளிப்பாடு) குறியீடு செயல்படுத்தலை இணைக்கிறது, உலகளாவிய பொருளுக்கு வெளிப்புற அணுகலைத் தடுக்கிறது மற்றும் சாண்ட்பாக்ஸின் முழுமையான தனிமைப்படுத்தலை உறுதி செய்கிறது.
- ஒரு IIFE (உடனடியாக செயல்படுத்தப்பட்ட செயல்பாடு வெளிப்பாடு) குறியீடு செயல்படுத்தலை தனிமைப்படுத்துகிறது, உலகளாவிய பொருளுக்கு வெளிப்புற அணுகலை தடைசெய்கிறது மற்றும் சாண்ட்பாக்ஸின் மொத்த தனிமைப்படுத்தலை வழங்குகிறது.
- நீக்கப்பட்டதைப் பயன்படுத்த பரிந்துரைக்கப்படவில்லை அறிக்கை. போன்ற சமகால மாற்றீடுகள் மற்றும் பொருள்கள் மிகவும் நம்பகமான மற்றும் பாதுகாப்பான விருப்பங்களை வழங்குகின்றன.
பாதுகாப்பான ஜாவாஸ்கிரிப்ட் சாண்ட்பாக்ஸை உருவாக்குவதற்கான இறுதி எண்ணங்கள்
குளோபல் இதைப் பயன்படுத்தி சாண்ட்பாக்ஸை அமைத்தல் ES6 தொகுதிக்கூறுகளில், மாறி அணுகலை நிர்வகிக்கவும் பாதுகாப்பாகவும் கட்டுப்படுத்தும் ஒரு சிறந்த நுட்பமாகும். இது நம்பத்தகாத குறியீட்டை மிகவும் பாதுகாப்பாக இயக்குவதை சாத்தியமாக்குகிறது மற்றும் முக்கியமான உலகளாவிய மாறிகளின் பாதுகாப்பிற்கு உத்தரவாதம் அளிக்கிறது.
இந்த முறையானது டெவலப்பர்கள் பயன்படுத்தும்போது அவர்களின் உலகளாவிய சூழலை முழுமையாக மாற்றியமைக்கவும் கட்டுப்படுத்தவும் அனுமதிக்கிறது . இந்த நுட்பம் சாண்ட்பாக்ஸ் அல்லாத மாறிகளுக்கு அங்கீகரிக்கப்படாத அணுகலைத் தடுப்பதன் மூலம் பாதுகாப்பான சூழலை உருவாக்குகிறது-குறிப்பாக சிக்கலான அல்லது பல குத்தகைதாரர் அமைப்புகளில்.
- பற்றிய விரிவான ஆவணங்கள் பொருள் மற்றும் அதன் பயன்பாடு MDN வெப் டாக்ஸில் இருந்து குறிப்பிடப்பட்டது. எப்படி என்பதை விளக்குகிறது உலகளாவிய பொருளுக்கு உலகளாவிய குறிப்பை வழங்குகிறது, மேலும் பாதுகாப்பு நோக்கங்களுக்காக அதை எவ்வாறு மேலெழுதலாம். MDN வெப் டாக்ஸ் - உலகளாவிய இது
- பயன்படுத்துவதற்கான வழிகாட்டுதல் சாண்ட்பாக்சிங் பாதுகாப்பை மேம்படுத்தும் பொருள்கள் மற்றும் பொருள் பண்புகளுக்கான அணுகலை இடைமறிப்பது அதிகாரப்பூர்வ ECMAScript ஆவணத்திலிருந்து மாற்றியமைக்கப்பட்டது. ECMAScript ப்ராக்ஸி பொருள்கள்
- வலை பயன்பாட்டு பாதுகாப்பை மேம்படுத்துவதற்காக ஜாவாஸ்கிரிப்டில் சாண்ட்பாக்சிங் மற்றும் சூழல் தனிமைப்படுத்தல் பற்றிய பொதுவான கருத்துக்கள் பாதுகாப்பான குறியீட்டு நடைமுறைகளுக்கான OWASP வழிகாட்டுதல்களிலிருந்து மதிப்பாய்வு செய்யப்பட்டன. OWASP பாதுகாப்பான குறியீட்டு நடைமுறைகள்