NPM 12 ஸ்கிரிப்ட் இயக்க முறையை மாற்றுகிறது

19 ஆண்டுகளாக, npm install தானாகவே குறியீடுகளை (code) இயக்கி வந்தது. இது preinstall மற்றும் postinstall போன்ற lifecycle hooks-களைப் பயன்படுத்தியது. நீங்கள் ஒரு package-ஐ பதிவிறக்கம் செய்தவுடன், நீங்கள் அந்த குறியீட்டை ஆய்வு செய்வதற்கு முன்பே அது ஸ்கிரிப்ட்களை இயக்கிவிடும்.

இந்த நம்பிக்கையின் அடிப்படையில் அமைந்த முறை npm 12 உடன் முடிவுக்கு வருகிறது.

ஜூலை 2026 முதல், GitHub 'opt-out' முறையிலிருந்து 'opt-in' முறைக்கு மாறுகிறது. இந்த மாற்றம் உங்கள் சப்ளை செயினை (supply chain) தாக்குதல்தாரர்களிடமிருந்து பாதுகாக்கிறது.

npm 12-இல் என்னென்ன மாற்றங்கள் நிகழ்கின்றன என்பது இங்கே:

  • preinstall அல்லது postinstall போன்ற dependency ஸ்கிரிப்ட்கள் தானாக இயங்காது. அவற்றை அனுமதிக்க நீங்கள் npm approve-scripts என்பதைப் பயன்படுத்த வேண்டும்.
  • node-gyp மூலம் செய்யப்படும் native module builds இயல்பாகவே தடுக்கப்படும். அவற்றை நீங்கள் வெளிப்படையாக அனுமதிக்க வேண்டும்.
  • Git மற்றும் remote URL dependencies தானாகவே resolve செய்யப்படாது. இதற்கு உங்களுக்கு --allow-git அல்லது --allow-remote flag தேவைப்படும்.
  • புதிய min-release-age அமைப்பு, புதிய package பதிப்புகளைத் தடுக்க உங்களுக்கு அனுமதிக்கிறது. ஒரு package ஆய்வு செய்யப்பட போதுமான காலப்பகுதி கடந்துவிட்டதை உறுதி செய்ய நீங்கள் ஒரு காலக்கெடுவை (timer) அமைக்கலாம்.

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

நீங்கள் இப்போதே தயாராகலாம். நீங்கள் npm 11.16.0 அல்லது அதற்கு மேற்பட்ட பதிப்பைப் பயன்படுத்தினால், இந்த கட்டளையை இயக்கவும்:

npm approve-scripts --allow-scripts-pending

எந்தெந்த dependencies ஸ்கிரிப்ட்களை இயக்குகின்றன என்பதை இது உங்களுக்குக் காட்டும். நீங்கள் நம்பகமானவற்றை மட்டும் அங்கீகரித்து (approve), அவற்றை உங்கள் package.json-இல் சேமித்துக் கொள்ளலாம். இந்த அடிப்படை மாற்றம் (breaking change) வருவதற்கு முன்பே இதைச் செய்துவிடுங்கள்.

Source: https://dev.to/ranjansingh41/npm-12-will-change-script-execution-behavior-to-prevent-attacks-45lg

விருப்பமான கற்றல் சமூகம்: https://t.me/GyaanSetuAi