NPM v12: Những thay đổi quan trọng về bảo mật và cách chuẩn bị

Phần mềm09 tháng 6, 2026·3 phút đọc

Phiên bản npm v12 dự kiến ra mắt vào tháng 7 năm 2026 sẽ mang lại những thay đổi mặc định quan trọng liên quan đến bảo mật cho lệnh `npm install`. Các nhà phát triển cần chủ động cập nhật lên npm 11.16.0 để kiểm tra và phê duyệt các tập lệnh, phụ thuộc Git và URL từ xa trước khi nâng cấp.

NPM v12: Những thay đổi quan trọng về bảo mật và cách chuẩn bị

NPM v12: Những thay đổi quan trọng về bảo mật và cách chuẩn bị

Phiên bản chính tiếp theo của npm, v12, dự kiến sẽ phát hành vào tháng 7 năm 2026 với trọng tâm là tăng cường bảo thông qua việc thay đổi các hành vi mặc định của lệnh npm install. Tất cả các thay đổi này hiện đã có sẵn dưới dạng cảnh báo trong các phiên bản npm từ 11.16.0 trở lên, cho phép cộng đồng nhà phát triển có đủ thời gian để chuẩn bị và thích nghi.

Mục tiêu chính của npm v12 là chuyển đổi các hành vi tự động hiện tại sang cơ chế "opt-in" (chỉ thực hiện khi được người dùng đồng ý rõ ràng), nhằm giảm thiểu các rủi ro bảo mật tiềm ẩn.

Các thay đổi mặc định về bảo mật

Mỗi thay đổi dưới đây sẽ sửa đổi hành vi của npm install để yêu cầu sự chấp thuận rõ ràng từ phía người dùng:

allowScripts mặc định tắt (off) Theo mặc định, npm install sẽ không còn thực hiện các tập lệnh preinstall, install hay postinstall từ các phụ thuộc (dependencies) trừ khi chúng được cho phép rõ ràng trong dự án của bạn. Điều này bao gồm cả các bản dựng native node-gyp (ví dụ: một gói có tệp binding.gyp nhưng không có tập lệnh cài đặt rõ ràng vẫn bị chặn, vì npm chạy một lệnh node-gyp rebuild ngầm định cho nó). Các tập lệnh prepare từ các phụ thuộc git, file và link cũng bị chặn theo cách tương tự.

Để xem những gói nào sẽ bị chặn, bạn có thể chạy lệnh npm approve-scripts --allow-scripts-pending. Sau đó, hãy cho phép các gói bạn tin tưởng bằng npm approve-scripts và chặn các gói còn lại bằng npm deny-scripts. Danh sách cho phép (allowlist) kết quả sẽ được ghi vào package.json và nên được commit vào mã nguồn.

--allow-git mặc định là none npm install sẽ không còn giải quyết các phụ thuộc từ Git (trực tiếp hoặc gián tiếp) trừ khi được cho phép rõ ràng thông qua cờ --allow-git. Thay đổi này đóng một đường dẫn thực thi mã (code-execution path) mà tệp .npmrc của phụ thuộc Git có thể ghi đè tệp thực thi Git, ngay cả khi đã sử dụng --ignore-scripts. Thay đổi này đã được công bố trước đó vào ngày 2026-02-18 và có sẵn trong npm 11.10.0+.

--allow-remote mặc định là none npm install sẽ không còn giải quyết các phụ thuộc từ các URL từ xa, chẳng hạn như các tệp tarballs HTTPS (trực tiếp hoặc gián tiếp), trừ khi được cho phép rõ ràng thông qua cờ --allow-remote. Cờ này có sẵn trong npm 11.15.0+. Các cờ liên quan như --allow-file--allow-directory không thay đổi mặc định trong v12.

Cách chuẩn bị cho bản nâng cấp

Để đảm bảo quá trình phát triển không bị gián đoạn khi nâng cấp lên npm v12, các nhà phát triển nên thực hiện các bước sau:

  1. Nâng cấp npm: Cập nhật lên phiên bản npm 11.16.0 hoặc mới hơn.
  2. Kiểm tra cảnh báo: Thực hiện quy trình cài đặt bình thường (npm install) và xem xét kỹ các cảnh báo xuất ra.
  3. Phê duyệt tập lệnh: Sử dụng lệnh npm approve-scripts --allow-scripts-pending để xem các gói nào có tập lệnh. Hãy phê duyệt những gói bạn tin tưởng và commit tệp package.json đã cập nhật.
  4. Xác minh: Sau khi thực hiện các bước trên, chỉ những tập lệnh bạn đã phê duyệt mới tiếp tục chạy khi bạn nâng cấp lên v12. Bất kỳ thứ gì bạn chưa phê duyệt sẽ dừng hoạt động.

Bạn có thể tìm thêm chi tiết trong tài liệu chính thức về npm approve-scripts, npm deny-scripts và cấu hình allow-scripts (dành cho npx và cài đặt toàn cầu).

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗