
NPM पैकेज सुरक्षित रूप से इंस्टॉल करें
एक सुरक्षा-केंद्रित npm इंस्टॉलर जो आपके प्रोजेक्ट्स को हाल ही में समझौता किए गए पैकेजों से सुरक्षित रखता है।
npm पैकेजों पर सप्लाई चेन हमले एक बढ़ता हुआ खतरा हैं। हमलावर कभी-कभी वैध पैकेजों से समझौता करते हैं:
ये हमले अक्सर अचानक होते हैं—एक पैकेज जो कल सुरक्षित था, आज समझौता हो सकता है। safe-npm आपको केवल उन पैकेज संस्करणों को स्थापित करके सुरक्षित रखता है जो न्यूनतम समय (डिफ़ॉल्ट रूप से 90 दिन) के लिए सार्वजनिक रूप से उपलब्ध रहे हैं। इससे सुरक्षा समुदाय को आपके प्रोजेक्ट तक पहुँचने से पहले दुर्भावनापूर्ण रिलीज़ को खोजने और रिपोर्ट करने का समय मिलता है।
जब आप safe-npm install चलाते हैं, यह:
package.json या कमांड-लाइन तर्कों से आपकी डिपेंडेंसी पढ़ता हैउदाहरण के लिए, यदि आप react@^18 निर्दिष्ट करते हैं और एक दुर्भावनापूर्ण [email protected] कल प्रकाशित हुआ था, तो safe-npm इसके बजाय नवीनतम संस्करण स्थापित करेगा जो कम से कम 90 दिन पुराना हो।
# Install globally
npm install -g @dendronhq/safe-npm
# Now you can use it anywhere
safe-npm install
# Clone and build
git clone <repository-url>
cd safe-npm
npm install
npm run build
# Link the binary globally
npm link
# Use the minimum age of 90 days (default)
safe-npm install
# Or specify your own minimum age
safe-npm install --min-age-days 120
# Install packages directly with version constraints
safe-npm install react@^18 lodash@^4.17.0
# These will be filtered to only use versions at least 90 days old
safe-npm install express --min-age-days 60
# Preview which versions would be installed without actually installing
safe-npm install --dry-run
--min-age-days <n>डिफ़ॉल्ट: 90
किसी पैकेज संस्करण को स्थापित किए जाने से पहले प्रकाशित हुए न्यूनतम दिनों की संख्या।
उदाहरण: --min-age-days 120 के लिए पैकेजों को कम से कम 4 महीने पुराना होना आवश्यक है।
कब समायोजित करें:
--ignore <pkg1,pkg2>पैकेजों की एक अल्पविराम-पृथक सूची जो आयु आवश्यकता को दरकिनार करती है। ये पैकेज अभी भी semver रेंज का सम्मान करेंगे लेकिन न्यूनतम आयु को अनदेखा करेंगे।
उदाहरण: --ignore typescript,@types/node
कब उपयोग करें:
--strictयदि कोई भी डिपेंडेंसी आयु आवश्यकता को पूरा करने वाले संस्करण में हल नहीं हो पाती है तो एक त्रुटि के साथ बाहर निकलें।
उदाहरण: safe-npm install --strict
कब उपयोग करें:
--dev / --prod-onlyनियंत्रित करें कि package.json की कौन सी डिपेंडेंसी संसाधित की जाती हैं।
उदाहरण:
safe-npm install --dev - केवल devDependencies स्थापित करेंsafe-npm install --prod-only - केवल प्रोडक्शन डिपेंडेंसी स्थापित करेंकब उपयोग करें:
--strategy <direct|overrides>डिफ़ॉल्ट: direct
safe-npm हल किए गए संस्करणों को कैसे स्थापित करता है:
direct - npm install package@version का उपयोग करके हल किए गए संस्करणों को सीधे स्थापित करता है
overrides - हल किए गए संस्करणों को package.json के overrides फ़ील्ड में लिखता है, फिर npm install चलाता है
--registry <url>डिफ़ॉल्ट: https://registry.npmjs.org
एक वैकल्पिक npm रजिस्ट्री निर्दिष्ट करें।
उदाहरण: --registry https://registry.company.com
कब उपयोग करें:
--dry-runकोई बदलाव किए बिना दिखाएँ कि क्या स्थापित किया जाएगा।
उदाहरण: safe-npm install --dry-run
कब उपयोग करें:
# Create a new project
mkdir my-project && cd my-project
npm init -y
# Install dependencies safely
safe-npm install express@^4 lodash
# This creates package-lock.json with versions at least 90 days old
# Check what versions would be installed with age requirements
safe-npm install --dry-run
# If you're happy, install them
safe-npm install
# In your CI pipeline, fail the build if any package can't meet age requirements
safe-npm install --strict --min-age-days 120
# Or allow newer packages for dev dependencies only
safe-npm install --prod-only --strict
# Need to urgently update a specific package? Add it to ignore list
safe-npm install --ignore package-with-critical-fix
प्रोजेक्ट में एक टेस्ट सूट शामिल है जिसे आप चला सकते हैं:
npm test
स्वचालित परीक्षण के लिए, आप फिक्स्चर का उपयोग करके रजिस्ट्री प्रतिक्रियाओं को मॉक कर सकते हैं:
export SAFE_NPM_FIXTURES=/path/to/fixtures.json
safe-npm install
फिक्स्चर फ़ाइल में JSON होना चाहिए जो प्रत्येक पैकेज के लिए npm रजिस्ट्री प्रतिक्रियाओं को दर्शाता है।
वास्तविक दुनिया का परिदृश्य:
popular-lib एक विश्वसनीय डेवलपर द्वारा बनाए रखा जाता है[email protected] प्रकाशित करता है^5.0.0 का उपयोग करने वाले प्रोजेक्ट तुरंत दुर्भावनापूर्ण संस्करण स्थापित करेंगे4.9.0 (90+ दिन पुराना नवीनतम संस्करण) का उपयोग करते रहेंगेसुरक्षा समझौतों के बारे में है। safe-npm अचानक सप्लाई चेन समझौतों से सुरक्षा के लिए ब्लीडिंग-एज अपडेट का व्यापार करता है। यह एक गहन-सुरक्षा (defense-in-depth) रणनीति की एक परत है जिसमें ये भी शामिल होने चाहिए:
npm audit)ISC