முன்மாதிரி மாசு தாக்குதல்களைத் தடுப்பது எப்படி?

Munmatiri Macu Takkutalkalait Tatuppatu Eppati



முன்மாதிரி மாசு தாக்குதல் ஜாவாஸ்கிரிப்ட் பொருள்கள் அவற்றின் தொடர்புடைய முன்மாதிரிகளை கையாளும் விதத்தை பயன்படுத்துகிறது. ஜாவாஸ்கிரிப்ட்டில், தேர்ந்தெடுக்கப்பட்ட பொருளின் இயல்புநிலை பண்புகள் மற்றும் முறைகளை வரையறுக்கும் மற்றொரு பொருள் முன்மாதிரிகள். இந்த முன்மாதிரிகளில் தீங்கிழைக்கும் குறியீட்டை உட்செலுத்துவதன் மூலம், பொருளின் பண்புகளை கையாளுவதன் மூலம் அல்லது பொருட்களை மீண்டும் மீண்டும் ஒன்றிணைக்கும் செயல்பாட்டைப் பயன்படுத்துவதன் மூலம் ஒரு தாக்குபவர் முன்மாதிரி மாசுபாட்டைப் பயன்படுத்துகிறார்.

இந்த வழிகாட்டி முன்மாதிரி மாசு தாக்குதல்களைத் தடுப்பதற்கான வழிகளை விளக்குகிறது.







முன்மாதிரி மாசு தாக்குதல்களைத் தடுக்கவா?

முன்மாதிரி மாசு தாக்குதல்களின் மூலக் காரணம், ஜாவாஸ்கிரிப்ட் பொருள்கள் அவற்றின் முன்மாதிரியிலிருந்து பண்புகளைப் பெறுவதாகும். இதன் பொருள், ஒரு தாக்குபவர் தீங்கிழைக்கும் குறியீட்டை முன்மாதிரிக்குள் செலுத்தினால், அது அந்த முன்மாதிரியிலிருந்து பெறப்பட்ட அனைத்து பொருட்களாலும் பெறப்படும். இது தரவு திருடுவதற்கும், தன்னிச்சையான குறியீட்டை இயக்குவதற்கும் அல்லது பிற பயன்பாடுகளின் கட்டுப்பாட்டை எடுப்பதற்கும் வழிவகுக்கிறது.



கீழே உள்ள குறியீடு துணுக்கில், முன்மாதிரி மாசு குறியீடு உட்செலுத்தப்படும்:



const y = { ஒரு: 1 , b: 2 } ;
நிலையான தரவு = JSON.parse ( '{'__proto__': { 'faulty': true}}' ) ;

const c = Object.assign ( { } , மற்றும், தரவு ) ;
console.log ( c. தவறு ) ;


மேலே உள்ள குறியீடு துணுக்கின் விளக்கம்:





    • முதலில், பெயரிடப்பட்ட பட்டியல் ' மற்றும் ” உருவாக்கப்பட்டு, அது மதிப்புகளை முக்கிய மதிப்பு ஜோடியில் சேமிக்கிறது.
    • உதவியுடன் ' -எனவே- ”, சீரற்ற மாசுபடுத்தப்பட்ட குறியீடு முக்கிய மதிப்பு வடிவத்தில் செயல்படுத்தப்படுகிறது. திறவுகோல் ' தவறான ' மற்றும் ஒதுக்கப்பட்ட மதிப்பு ' உண்மை ”.
    • பின்னர், இந்த மாசுபடுத்தப்பட்ட குறியீடு ' மற்றும் '' என்று அழைப்பதன் மூலம் பட்டியல் ஒதுக்க() ” முறை, அதன் விளைவாக வரும் பட்டியல் புதிய பட்டியலில் சேமிக்கப்படும் “ c ”.
    • இறுதியாக, உட்செலுத்தப்பட்ட மாசுபட்ட குறியீடு ' c ” பட்டியல் மீட்டெடுக்கப்பட்டது மற்றும் அதன் மதிப்பு கன்சோலில் காட்டப்படும். மாசு அல்லது தீங்கிழைக்கும் தரவு உட்செலுத்தப்பட்டிருப்பதை உறுதி செய்ய.

கொண்டிருக்கும் கோப்பை இயக்கிய பிறகு, தீங்கிழைக்கும் குறியீடு வெற்றிகரமாக செலுத்தப்பட்டு அதன் மதிப்பு மீட்டெடுக்கப்பட்டதை வெளியீடு காட்டுகிறது:



முன்மாதிரி மாசு தாக்குதல்களைத் தடுப்பது எப்படி?

முன்மாதிரி மாசு தாக்குதலைத் தடுக்க பல அணுகுமுறைகள் உள்ளன:

பாதுகாப்பற்ற சுழல்நிலை இணைப்புகள்:

பாதுகாப்பற்ற சுழல்நிலை இணைப்புகளைத் தவிர்க்கவும், ஏனெனில் அவை முன்மாதிரி மாசு தாக்குதல்களுக்கு வழிவகுக்கும்:

எங்கே ஒன்றிணைக்க = ( எடுக்கும் , src ) = > {
க்கான ( var பண்புக்கூறுகள் உள்ளே src ) {
என்றால் ( வகை ( எடுக்கும் [ பண்புகளை ] ) === 'obj' && வகை ( src [ பண்புகளை ] ) === 'obj' )
{
ஒன்றிணைக்க ( எடுக்கும் [ பண்புகளை ] , src [ பண்புகளை ] ) ;
} வேறு {
எடுக்கும் [ பண்புகளை ] = எஸ்ஆர்சி [ பண்புகளை ] ;
}
}
திரும்ப எடுக்கும் ;
} ;


மேலே உள்ள குறியீட்டில்:

    • முதலில், தனிப்பயன் செயல்பாடு ' ஒன்றிணை 'இரண்டு வரிசை அளவுருக்களை ஏற்கும் வகையில் உருவாக்கப்பட்டது' எடுக்கும் 'மற்றும்' src ”.
    • மேம்படுத்தப்பட்ட ' க்கான 'லூப் மாறியை மீண்டும் செய்ய பயன்படுத்தப்படுகிறது' பண்புகளை 'வழங்கப்பட்டதற்கு மேல்' src 'அளவுரு.
    • வளையத்தின் உள்ளே, ஒரு 'ஐப் பயன்படுத்தவும் என்றால் ” என்ற அறிக்கை இரண்டு பிழைகள் வழியாகவும், இரு அணிகளிலும் இருக்கும் எந்த உறுப்பும் ஒரே தரவு வகையைக் கொண்டிருந்தால். பின்னர் அந்த கூறுகள் அதே அளவுருக்களாக அனுப்பப்படுகின்றன ' ஒன்றிணை ” செயல்பாடு ஒரு சுழல்நிலை இயல்பை உருவாக்குகிறது.
    • வகைகள் ஒரே மாதிரியாக இல்லாவிட்டால், '' இல் இருக்கும் உறுப்பு மதிப்பு src 'அளவுரு வரிசை' க்கு அனுப்பப்பட்டது எடுக்கும் 'அளவுரு.
    • இறுதியாக, ' எடுக்கும் ” அளவுரு வரிசை திரும்பும்.

முன்மாதிரி உறைதல்

முன்மாதிரி மாசு தாக்குதல்களுக்கான மற்றொரு தடுப்பு, அவற்றின் செயல்பாட்டு சுழற்சியை முடக்குவதாகும். இது '' மூலம் செய்யப்படுகிறது Object.freeze() ”முறை. கீழே உள்ள துணுக்கில், மேலே செலுத்தப்பட்ட முன்மாதிரி மாசுபடுத்தப்பட்ட குறியீடு முடக்கப்படும்:

const y = { ஒரு: 1 , b: 2 } ;
நிலையான தரவு = JSON.parse ( '{'__proto__': { 'faulty': true}}' ) ;

const c = Object.assign ( { } , மற்றும், தரவு ) ;
console.log ( c. தவறு ) ;

console.log ( பொருள். முடக்கம் ( c. தவறு ) ) ;
console.log ( பொருள்.உறைந்துள்ளது ( c. தவறு ) ) ;


மேலே உள்ள குறியீட்டின் விளக்கம் கீழே காட்டப்பட்டுள்ளது:

    • ஆரம்பத்தில், போலி முன்மாதிரி மாசுபடுத்தப்பட்ட குறியீடு போலி பட்டியலில் புகுத்தப்படும் ' மற்றும் ” மேலே உள்ள பகுதியில் விளக்கியது போலவே.
    • பின்னர், உட்செலுத்தப்பட்ட மாசுபட்ட விசை ' தவறான ''க்கு அனுப்பப்படுகிறது உறைய() ” மாசுபட்ட பகுதியை உறைய வைக்கும் முறை.
    • இறுதியாக, உறைந்த முன்மாதிரி மாசு பகுதியை உறுதிப்படுத்த. ' தவறான 'பட்டியல் விசை' c ''க்கு அனுப்பப்படுகிறது உறைந்த () ”முறை. இந்த முறை திரும்பும் ' உண்மை 'உறைந்த நிலையில் மற்றும்' பொய் 'உறையாத நிலையில்:

அடங்கிய குறியீட்டைச் செயல்படுத்திய பிறகு, உறைந்த மாசுபட்ட குறியீட்டின் ஊசி, உறைதல் மற்றும் சரிபார்ப்பு ஆகியவற்றை வெளியீடு காட்டுகிறது:


முன்மாதிரி மாசு தாக்குதலைத் தடுப்பதற்கான கூடுதல் உதவிக்குறிப்புகள்

முன்மாதிரி மாசு தாக்குதலைத் தடுக்கக்கூடிய சில கூடுதல் உதவிக்குறிப்புகள் கீழே கூறப்பட்டுள்ளன:

    • விருப்பம் ' -முடக்கு-புரோட்டோ '' இன் செயல்பாட்டை முடக்க அல்லது கொல்ல பயன்படுத்தப்படலாம் முன்மாதிரி.__proto__ ”சொத்து.
    • உதவியுடன் முறைகளைப் பயன்படுத்த வேண்டாம் ' முன்மாதிரி ”.
    • மூலம் ' பயனர் உள்ளீட்டை சுத்தப்படுத்துதல் ” இது தீங்கிழைக்கும் அல்லது மாசுபட்ட குறியீட்டை அகற்ற பயனர் உள்ளீட்டை சரிபார்த்து வடிகட்டுவதை உள்ளடக்கியது.
    • பயன்பாடு ' ஏற்புப்பட்டியல் ”, இது ஒரு பொருளுக்கான அனுமதிக்கப்பட்ட பண்புகள் மற்றும் முறைகளின் பட்டியல். அனுமதிப்பட்டியலில் உறுப்பினராக இல்லாத பண்புகள் அல்லது முறைகளை அமைக்க அல்லது பெறுவதற்கான எந்த முயற்சியும் தடுக்கப்படும்.

Node.js இல் முன்மாதிரி மாசு தாக்குதல்களைத் தடுப்பது அவ்வளவுதான்.

முடிவுரை

முன்மாதிரி மாசு தாக்குதல்களைத் தடுக்க, பாதுகாப்பற்ற சுழல்நிலை இணைப்புகளைத் தவிர்ப்பது, முன்மாதிரியை முடக்குவது மற்றும் அனுமதிப்பட்டியலைப் பயன்படுத்துதல் போன்ற அணுகுமுறைகள் ' __எனவே__ ” அமைக்கப்படும் சொத்து பயன்படுத்தப்படலாம். பயன்பாட்டுடன் ' -முடக்கு-புரோட்டோ 'விருப்பங்கள், ' பயன்படுத்துவதைத் தவிர்த்தல் பொருள்.முன்மாதிரி ', மற்றும் ' பயனர் உள்ளீட்டை சுத்தப்படுத்துதல் ” மாசுபட்ட குறியீடு. இந்த வழிகாட்டி Nodejs இல் முன்மாதிரி மாசு தாக்குதல்களைத் தடுப்பதை விளக்கியுள்ளது.