Keamanan proyek npm, bagian 1

Keamanan proyek npm, bagian 1



Halo! Di posting terakhir, kami mulai melihat masalah penting keamanan di npm dan berbicara tentang tindakan apa yang digunakan perusahaan itu sendiri untuk mengidentifikasi dan mencegah ancaman. Kali ini saya ingin berbicara tentang alat dan pendekatan yang tersedia untuk Anda secara pribadi, dan yang sangat saya rekomendasikan agar semua pengembang menerapkan dalam praktik mereka.



Skrip instalasi



npm install (: preinstall, install/postinstall), . , . , , .



, :



Contoh paket yang berisi skrip berbahaya



: npm install malicious-package, evil.sh, unix-.



, , 2018 eslint-scope eslint-config-eslint, , .



, , , , , .



, npm npm, . , npm registry , , , , npm .



, , , , . , , .

, npm , npm , . .



, :



npm install suspicious-package --ignore-scripts


, ( .npmrc):



npm config set ignore-scripts true


, . , .





Batasan waktu proses



, , npm, npm install. , Docker-, . , npm root-; , . . : npm, .



: - , . , . npm.





Keamanan token dan kunci



: , . , npm .npmrc , .



npm - (, CI/CD), . , , read-only, . .



npm IP- (CIDR). IP ( IP) . , , (on-demand). , , .



.npmrc, (Git). NPM_TOKEN ( ).



npm token create, :



  • --read-only โ€” , (. . , );
  • --cidr=<CIDR> โ€” , IP. CIDR, IP. : --cidr=192.0.2.0/24.


, npm-, . npm, npm token list.



, npm adduser .npmrc . .



~/.npmrc :



//registry.npmjs.org/:_authToken=00000000-0000-0000-0000-000000000000


npm registry, .



, ~/.npmrc unix-!

(, SSH), , . , . . , . SSH, EdDSA . , . : Ed25519 (EdDSA) RSA ( 2048 ) .





Bola mata



, , . . , , npm install packae-name: 404, โ€” .



npm , . , , , copy-and-paste.





Kata sandi aman



, , :



  • , . (16 );
  • . ;
  • ;
  • , .


: . KeePass ( ). -, . -, , , . (., Google Drive DropBox), .



, , !


(MFA)



Otentikasi Multifungsi (MFA)



, . . : - , . - SMS- . , . . .



, npm -. : ยซ ยป ยซ ยป. ยซ ยป, . . , npm OTP npm adduser, - (, npm publish).



, npm 2FA, . : , QR-, -. , CLI :



  • npm profile enable-2fa auth-and-writes

    โ€” ยซ ยป ()
  • npm profile enable-2fa auth-only

    โ€” ยซ ยป


CLI npm ( ), QR-. (OTP), , .



npm , , , .



, , 2FA npm profile disable-2fa, . , , npm (, ).





Membatasi file yang diterbitkan



, npm publish, npm .



, npm
  • .git
  • CVS
  • .svn
  • .hg
  • .lock-wscript
  • .wafpickle-N
  • .*.swp
  • .DS_Store
  • ._*
  • npm-debug.log
  • .npmrc
  • node_modules
  • config.gypi
  • *.orig
  • package-lock.json


- registry , , , . . npm - , , .



, files package.json. , ( glob), . , - .



, , files:



  • package.json
  • README
  • CHANGES, CHANGELOG, HISTORY
  • LICENSE, LICENCE
  • NOTICE
  • , main


README, CHANGES, LICENSE NOTICE .



, .



, npm publish, --dry-run npm pack --dry-run. , , . --dry-run , , , .





, , npm-. โ€” .



, .






, , , , . , .



- , , .



.




All Articles