Bảo Mật NPM Dependencies: Hướng Dẫn Toàn Diện Bảo Vệ Chuỗi Cung Ứng cho Nhà Phát Triển API

Ashley Innocent

Ashley Innocent

1 tháng 4 2026

Bảo Mật NPM Dependencies: Hướng Dẫn Toàn Diện Bảo Vệ Chuỗi Cung Ứng cho Nhà Phát Triển API

TÓM TẮT

Các cuộc tấn công chuỗi cung ứng NPM đã tăng vọt lên hơn 3.000 gói độc hại chỉ riêng trong năm 2024, và vụ xâm nhập Axios tháng 3 năm 2026 đã chứng minh rằng ngay cả các gói nằm trong top 10 cũng không an toàn. Hướng dẫn này bao gồm mọi lớp phòng thủ mà nhà phát triển API cần: thực thi lockfile, chặn script postinstall, xác minh nguồn gốc, công cụ phân tích hành vi và các lựa chọn kiến trúc giúp thu hẹp bề mặt tấn công của bạn.

Giới thiệu

Cuộc tấn công chuỗi cung ứng Axios vào ngày 31 tháng 3 năm 2026 không phải là vụ xâm nhập npm đầu tiên. Và nó cũng sẽ không phải là cuối cùng. Nhưng với 83 triệu lượt tải xuống hàng tuần và một RAT (công cụ truy cập từ xa) đa nền tảng được triển khai thông qua một tài khoản bảo trì bị chiếm quyền kiểm soát, đó là tiếng chuông cảnh tỉnh lớn nhất mà hệ sinh thái JavaScript đã nhận được.

Đây là điều làm cho vụ việc này khác biệt so với lời khuyên thông thường “cập nhật các phần phụ thuộc của bạn”: cuộc tấn công Axios đã vượt qua mọi biện pháp phòng thủ truyền thống. Mã độc không nằm trong chính Axios. Nó được tiêm vào thông qua một phần phụ thuộc ảo đã kích hoạt hook postinstall. Lockfile không giúp ích gì nếu bạn chạy npm install trong thời gian cuộc tấn công diễn ra. Việc ghim phiên bản cũng không giúp ích nếu bạn chưa ghim.

Các nhà phát triển API đặc biệt dễ bị tổn thương. Các script kiểm thử, pipeline CI/CD, máy chủ giả lập và client HTTP của bạn đều kéo từ npm. Một gói bị xâm nhập duy nhất trong chuỗi công cụ của bạn có thể làm rò rỉ khóa API, thông tin đăng nhập cơ sở dữ liệu và token đám mây từ máy phát triển của bạn.

💡
Apidog loại bỏ một vector tấn công lớn bằng cách cung cấp một client HTTP tích hợp sẵn để kiểm thử API, vì vậy bạn không cần Axios, node-fetch, hoặc got trong bộ công cụ kiểm thử của mình. Tải xuống Apidog miễn phí để giảm bề mặt phụ thuộc npm của bạn trong khi áp dụng các chiến lược phòng thủ dưới đây.
Tải xuống ứng dụng

Hướng dẫn này bao gồm bảy lớp bảo vệ, từ vệ sinh lockfile cơ bản đến phân tích hành vi nâng cao.

Lớp 1: thực thi lockfile

Tại sao lockfile quan trọng

Lockfile ghi lại phiên bản chính xác của mọi gói và các phần phụ thuộc bắc cầu tại thời điểm cài đặt. Nếu không có lockfile, npm install sẽ phân giải phiên bản mới nhất phù hợp với phạm vi semver của bạn. Nếu package.json của bạn ghi "axios": "^1.14.0" và một phiên bản 1.14.1 độc hại tồn tại trên registry, bạn sẽ nhận được phiên bản độc hại đó.

Các quy tắc

Luôn commit lockfile của bạn. Dù là package-lock.json (npm), yarn.lock (Yarn), pnpm-lock.yaml (pnpm), hay bun.lock (Bun), nó đều thuộc về hệ thống kiểm soát phiên bản.

Sử dụng chế độ cài đặt đông lạnh (frozen installs) trong CI/CD. Không bao giờ chạy npm install trong các môi trường tự động. Hãy sử dụng lệnh tương đương với lockfile đông lạnh:

# npm
npm ci

# yarn
yarn install --frozen-lockfile

# pnpm
pnpm install --frozen-lockfile

# bun
bun install --frozen-lockfile

npm ci xóa node_modules và cài đặt nghiêm ngặt từ lockfile. Nếu lockfile không khớp với package.json, nó sẽ thất bại. Điều này ngăn chặn những bất ngờ trong quá trình phân giải.

Xem xét các thay đổi lockfile trong pull request. Khi một PR sửa đổi package-lock.json, hãy kiểm tra những gì đã thay đổi. Các phần phụ thuộc mới, tăng phiên bản và thay đổi URL registry đều cần được xem xét kỹ lưỡng. Các công cụ tự động như Socket.dev có thể gắn cờ các thay đổi lockfile đáng ngờ trong các đánh giá PR.

Khoảng trống của lockfile

Lockfile bảo vệ chống lại việc phân giải phiên bản không mong muốn, nhưng chúng không bảo vệ chống lại lần cài đặt đầu tiên. Nếu bạn khởi tạo một dự án hoặc thêm một phần phụ thuộc mới trong thời gian cuộc tấn công diễn ra, phiên bản độc hại sẽ bị khóa lại. Đây là lý do tại sao lockfile là Lớp 1, chứ không phải lớp duy nhất.

Lớp 2: vô hiệu hóa script postinstall

Vector tấn công chính

Cuộc tấn công Axios, cuộc tấn công ua-parser-js, cuộc tấn công event-stream, và hàng chục cuộc tấn công khác đều sử dụng cùng một cơ chế: một script postinstall chạy mã tùy ý trong quá trình npm install. Hook này thực thi trước khi mã ứng dụng của bạn chạy, trước khi bạn xem xét gói, và trước khi bất kỳ công cụ bảo mật thời gian chạy nào có thể can thiệp.

Chặn script trên toàn cầu

Thêm vào .npmrc của bạn:

ignore-scripts=true

Hoặc đặt nó qua CLI:

npm config set ignore-scripts true

Điều này ngăn chặn tất cả các script vòng đời (preinstall, install, postinstall, prepare) chạy trong quá trình cài đặt gói.

Xử lý các gói cần script

Một số gói yêu cầu script postinstall để biên dịch native (như bcrypt, sharp, hoặc sqlite3). Bạn có hai lựa chọn:

Tùy chọn 1: Chạy script chọn lọc sau khi cài đặt

npm ci --ignore-scripts
npm rebuild bcrypt sharp

Tùy chọn 2: Sử dụng danh sách cho phép (npm 10+)

Tạo một tệp .scriptsrc.json chỉ cho phép các gói đáng tin cậy chạy script:

{
  "allowScripts": {
    "bcrypt": true,
    "sharp": true
  }
}

Tùy chọn 3: Sử dụng các binary được biên dịch sẵn

Nhiều gói trước đây cần biên dịch native giờ đây đã cung cấp các binary được biên dịch sẵn. Ví dụ, sharp cung cấp các binary được biên dịch sẵn cho hầu hết các nền tảng, loại bỏ nhu cầu biên dịch postinstall. Kiểm tra các phần phụ thuộc của bạn; bạn có thể cần ít ngoại lệ script hơn bạn nghĩ.

Lưu ý về PackageGate

Vào tháng 1 năm 2026, các nhà nghiên cứu đã tiết lộ sáu lỗ hổng zero-day được gọi là “PackageGate” ảnh hưởng đến npm, pnpm, vlt và Bun. Một phát hiện: các phần phụ thuộc dựa trên Git có thể mang theo các tệp cấu hình cho phép thực thi mã ngay cả khi các script vòng đời bị vô hiệu hóa. Nếu package.json của bạn tham chiếu các URL Git cho các phần phụ thuộc, ignore-scripts một mình là không đủ. Hãy ghim các phần phụ thuộc đó vào các commit hash cụ thể và kiểm tra nội dung kho lưu trữ.

Lớp 3: ghim các phiên bản chính xác

Ngừng sử dụng các phạm vi semver

Hành vi mặc định của npm install --save thêm các gói với tiền tố dấu mũ:

{
  "axios": "^1.14.0"
}

Dấu ^ có nghĩa là “tương thích với 1.14.0,” và sẽ phân giải thành phiên bản 1.x.x mới nhất. Trong cuộc tấn công Axios, điều đó có nghĩa là phân giải thành 1.14.1.

Thay vào đó, hãy ghim các phiên bản chính xác:

{
  "axios": "1.14.0"
}

Cấu hình npm để lưu các phiên bản chính xác theo mặc định:

# .npmrc
save-exact=true
save-prefix=''

Sử dụng ghi đè cho các phần phụ thuộc bắc cầu

Các phần phụ thuộc trực tiếp của bạn có các phần phụ thuộc riêng. Nếu một phần phụ thuộc bắc cầu bị xâm phạm, việc ghim phần phụ thuộc trực tiếp của bạn sẽ không giúp ích gì. Sử dụng overrides để kiểm soát việc phân giải bắc cầu:

{
  "overrides": {
    "axios": "1.14.0",
    "plain-crypto-js": "npm:empty-npm-package@1.0.0"
  }
}

Đối với Yarn:

{
  "resolutions": {
    "axios": "1.14.0"
  }
}

Đối với pnpm:

{
  "pnpm": {
    "overrides": {
      "axios": "1.14.0"
    }
  }
}

Đánh đổi

Việc ghim chính xác có nghĩa là bạn sẽ không nhận được các bản cập nhật vá lỗi tự động. Bạn sẽ cần tự tay nâng cấp phiên bản, điều này tạo ra chi phí bảo trì. Sự đánh đổi này là có chủ đích: bạn chọn các bản cập nhật được kiểm soát thay vì tự động. Đối với các dự án nhạy cảm về bảo mật, sự đánh đổi này là đáng giá.

Lớp 4: xác minh nguồn gốc gói

Nguồn gốc có nghĩa là gì

Xác nhận nguồn gốc npm liên kết một gói đã xuất bản với mã nguồn và môi trường xây dựng của nó bằng cách sử dụng chữ ký Sigstore được ghi vào sổ cái minh bạch công khai. Khi một gói được xuất bản từ pipeline CI/CD với tính năng nguồn gốc được bật, gói đó bao gồm bằng chứng mật mã về:

Cách kiểm tra nguồn gốc

npm audit signatures

Điều này xác minh rằng các gói đã cài đặt có các xác nhận nguồn gốc hợp lệ. Các gói được xuất bản thủ công từ máy của nhà phát triển sẽ không có nguồn gốc.

Các phiên bản Axios độc hại thiếu liên kết nguồn gốc OIDC và không có các commit GitHub tương ứng. Nếu kiểm tra nguồn gốc tự động là thực hành tiêu chuẩn, cuộc tấn công sẽ ngay lập tức gióng lên hồi chuông cảnh báo.

Bật nguồn gốc cho các gói của riêng bạn

Nếu bạn xuất bản các gói npm, hãy bật nguồn gốc trong CI/CD của bạn:

# Ví dụ GitHub Actions
- uses: actions/setup-node@v4
  with:
    node-version: 20
    registry-url: https://registry.npmjs.org
- run: npm publish --provenance
  env:
    NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

Thêm vào .npmrc của bạn:

provenance=true

Hạn chế

Provenance là tùy chọn. Hầu hết các gói npm vẫn chưa có nó. Và provenance chỉ chứng minh nơi gói được xây dựng. Nó không chứng minh mã nguồn an toàn. Một pipeline CI/CD bị xâm nhập vẫn có thể xuất bản một gói độc hại với provenance hợp lệ.

Lớp 5: sử dụng công cụ phân tích hành vi

Ngoài việc quét lỗ hổng

Các công cụ truyền thống như npm auditSnyk kiểm tra dựa trên cơ sở dữ liệu các lỗ hổng đã biết (CVEs). Chúng phát hiện các vấn đề đã được báo cáo nhưng bỏ sót các cuộc tấn công zero-day. Vụ xâm nhập Axios không có trong bất kỳ cơ sở dữ liệu CVE nào khi nó được xuất bản.

Các công cụ phân tích hành vi kiểm tra những gì các gói thực hiện, chứ không phải những gì đã được báo cáo về chúng.

Socket.dev

Socket phân tích hành vi của gói trong quá trình cài đặt và thời gian chạy. Nó gắn cờ:

Ví dụ quét bảo mật của Socket.dev

Khi tích hợp với GitHub, Socket sẽ bình luận trên các PR khi các phần phụ thuộc mới thể hiện hành vi đáng ngờ. Phần phụ thuộc plain-crypto-js của cuộc tấn công Axios đáng lẽ đã kích hoạt nhiều cảnh báo từ Socket: mã bị che khuất, yêu cầu mạng trong postinstall, và ghi vào hệ thống tệp bên ngoài thư mục gói.

# Cài đặt Socket CLI
npm install -g @socketsecurity/cli

# Quét dự án của bạn
socket scan

Snyk

Snyk cung cấp quản lý lỗ hổng với điểm rủi ro, dữ liệu mức độ trưởng thành khai thác và hướng dẫn khắc phục. Nó mạnh hơn đối với các lỗ hổng đã biết nhưng yếu hơn trong việc phát hiện hành vi zero-day.

# Cài đặt Snyk CLI
npm install -g snyk

# Kiểm thử dự án của bạn
snyk test
Ví dụ quét lỗ hổng của Snyk

Tiếp cận theo lớp

Sử dụng cả hai. Socket phát hiện các bất thường về hành vi mà Snyk bỏ sót. Snyk phát hiện các lỗ hổng đã biết với ngữ cảnh phong phú hơn so với Socket cung cấp. Thêm npm audit làm cơ sở:

# Cơ sở
npm audit

# Phân tích hành vi
socket scan

# Quản lý lỗ hổng
snyk test

Chạy cả ba công cụ này trong CI/CD như các cổng kiểm soát. Bất kỳ phát hiện quan trọng nào cũng phải chặn quá trình xây dựng.

Lớp 6: giảm thiểu bề mặt phụ thuộc của bạn

Câu hỏi sâu sắc hơn

Mọi gói trong thư mục node_modules của bạn đều là một quyết định tin cậy. Cuộc tấn công Axios đã xâm phạm một gói có 83 triệu lượt tải xuống hàng tuần. Một dự án Node.js trung bình có hàng trăm phần phụ thuộc bắc cầu. Mỗi phần phụ thuộc đó là một vector tấn công tiềm năng.

Biện pháp phòng thủ hiệu quả nhất là có ít phần phụ thuộc hơn để bảo vệ.

Kiểm tra cây phụ thuộc của bạn

# Đếm tổng số phần phụ thuộc của bạn
npm ls --all | wc -l

# Kiểm tra các trùng lặp
npm ls --all | sort | uniq -c | sort -rn | head -20

Hãy tự hỏi những câu hỏi này cho mỗi phần phụ thuộc:

Các lựa chọn thay thế native cho các gói phổ biến

Gói Thay thế native Có sẵn từ
axios, node-fetch, got fetch (global) Node.js 18
uuid crypto.randomUUID() Node.js 19
dotenv --env-file flag Node.js 20.6
chalk util.styleText() Node.js 21.7
glob fs.glob() Node.js 22
path-to-regexp Native URL pattern API Node.js 23

Đặc biệt đối với kiểm thử API

Các quy trình kiểm thử API thường phụ thuộc vào thư viện client HTTP, thư viện khẳng định, trình chạy kiểm thử và máy chủ giả lập. Mỗi phần phụ thuộc là một bề mặt tấn công.

Apidog loại bỏ nhu cầu về nhiều phần phụ thuộc npm

Apidog thay thế toàn bộ stack bằng một nền tảng duy nhất:

Việc chuyển quy trình kiểm thử API của bạn vào Apidog giúp loại bỏ hàng chục phần phụ thuộc npm khỏi cơ sở hạ tầng kiểm thử của bạn. Ít phần phụ thuộc hơn có nghĩa là ít quyết định tin cậy hơn và ít vector tấn công hơn.

Dùng thử Apidog miễn phí để hợp nhất stack kiểm thử API của bạn.

Tải xuống ứng dụng

Lớp 7: giám sát mạng và thời gian chạy

Chặn các tên miền độc hại đã biết

Sau bất kỳ cuộc tấn công chuỗi cung ứng nào, hãy chặn cơ sở hạ tầng điều khiển và chỉ huy ở cấp độ mạng:

# Thêm vào /etc/hosts
echo "0.0.0.0 sfrclak.com" | sudo tee -a /etc/hosts

Đối với môi trường CI/CD, hãy hạn chế quyền truy cập mạng đi ra ngoài đối với các tên miền đã biết là tốt. Hầu hết các quy trình xây dựng chỉ cần quyền truy cập vào npm registry, máy chủ git của bạn và các mục tiêu triển khai của bạn. Mọi thứ khác nên bị chặn theo mặc định.

Sử dụng StepSecurity Harden-Runner cho CI/CD

Harden-Runner của StepSecurity giám sát các workflow GitHub Actions theo thời gian thực. Nó đã phát hiện Axios dropper liên hệ C2 trong vòng 1.1 giây sau khi npm install bắt đầu. Công cụ này cung cấp:

# GitHub Actions
- uses: step-security/harden-runner@v2
  with:
    egress-policy: audit  # hoặc 'block' cho chế độ nghiêm ngặt

Giám sát quy trình thời gian chạy

Đối với máy phát triển, hãy xem xét các công cụ phát hiện và phản hồi điểm cuối (EDR) gắn cờ các quy trình con đáng ngờ được tạo ra bởi Node.js. RAT của Axios đã tạo ra osascript (macOS), cscript (Windows), và python3 (Linux) từ bên trong quy trình npm install. Các mẫu quy trình con này có thể phát hiện được.

Cấu hình .npmrc được khuyến nghị

Dưới đây là một tệp .npmrc được tăng cường bảo mật kết hợp các lớp ở trên:

# Ghim các phiên bản chính xác
save-exact=true
save-prefix=

# Vô hiệu hóa script vòng đời
ignore-scripts=true

# Bật nguồn gốc cho việc xuất bản
provenance=true

# Sử dụng registry chính thức
registry=https://registry.npmjs.org/

# Yêu cầu 2FA để xuất bản
auth-type=web

# Ngưỡng mức kiểm toán
audit-level=moderate

Commit tệp này vào kho lưu trữ của bạn để mọi thành viên trong nhóm đều sử dụng cùng một cài đặt bảo mật.

Ví dụ về pipeline bảo mật CI/CD

Dưới đây là một workflow GitHub Actions thực thi cả bảy lớp:

name: Secure Build
on: [push, pull_request]

jobs:
  security-check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: step-security/harden-runner@v2
        with:
          egress-policy: audit

      - uses: actions/setup-node@v4
        with:
          node-version: 22

      # Lớp 1+2: Lockfile đông lạnh, không script
      - run: npm ci --ignore-scripts

      # Lớp 3: Xác minh không có phiên bản bất ngờ
      - run: npm ls --all > deps.txt

      # Lớp 4: Kiểm tra nguồn gốc
      - run: npm audit signatures

      # Lớp 5: Phân tích hành vi
      - run: npx socket scan

      # Lớp 5: Quét lỗ hổng
      - run: npx snyk test

      # Lớp 1: Kiểm toán cơ bản
      - run: npm audit --audit-level=moderate

      # Chỉ xây dựng lại các phần phụ thuộc native được phép
      - run: npm rebuild sharp bcrypt

Điều gì sẽ đến tiếp theo cho bảo mật npm

Xác nhận nguồn gốc bắt buộc cho các gói phổ biến

npm đang thảo luận về việc yêu cầu xác nhận nguồn gốc cho các gói vượt quá một ngưỡng tải xuống nhất định. Điều này sẽ ngăn chặn việc xuất bản thủ công dựa trên token đã tạo điều kiện cho cuộc tấn công Axios.

Phê duyệt phát hành của hai người

Giống như các giao dịch tài chính yêu cầu ủy quyền kép, các gói có lượt tải xuống cao có thể yêu cầu người bảo trì thứ hai phê duyệt các bản phát hành. Một tài khoản bị xâm nhập duy nhất sẽ không đủ.

Phạm vi quyền thời gian chạy

Deno đã hạn chế những gì script có thể truy cập (mạng, hệ thống tệp, biến môi trường) trừ khi được cấp quyền rõ ràng. Node.js đang khám phá các mô hình quyền tương tự. Khi tính năng này được triển khai, các script postinstall sẽ cần quyền rõ ràng để thực hiện các yêu cầu mạng hoặc truy cập hệ thống tệp.

Sự hội tụ của trình quản lý gói

Mô hình cách ly nghiêm ngặt của pnpm (các gói chỉ có thể truy cập các phần phụ thuộc đã khai báo của chúng) ngăn chặn nhiều cuộc tấn công nhầm lẫn phần phụ thuộc. Khi npm áp dụng sự nghiêm ngặt tương tự, bề mặt tấn công sẽ thu hẹp lại.

Câu hỏi thường gặp

Tấn công chuỗi cung ứng trong npm là gì?

Tấn công chuỗi cung ứng trong npm nhắm mục tiêu vào chuỗi phụ thuộc phần mềm thay vì ứng dụng của bạn trực tiếp. Kẻ tấn công xâm nhập tài khoản người bảo trì gói, tiêm mã độc vào các gói phổ biến hoặc xuất bản các gói typosquat có tên tương tự. Khi bạn cài đặt hoặc cập nhật các phần phụ thuộc, mã độc sẽ thực thi trên máy của bạn hoặc trong pipeline CI/CD của bạn, đánh cắp thông tin đăng nhập, cài đặt backdoor hoặc lấy cắp dữ liệu.

npm audit có đủ để bảo vệ chống lại các cuộc tấn công chuỗi cung ứng không?

Không. npm audit kiểm tra dựa trên cơ sở dữ liệu các lỗ hổng đã biết (CVEs). Các cuộc tấn công zero-day như vụ xâm nhập Axios không có trong bất kỳ cơ sở dữ liệu CVE nào khi chúng xảy ra. Bạn cần các công cụ phân tích hành vi như Socket.dev kiểm tra những gì các gói thực hiện, chứ không phải những gì đã được báo cáo về chúng. Sử dụng npm audit làm cơ sở, chứ không phải biện pháp phòng thủ duy nhất của bạn.

Tôi có nên ngừng sử dụng npm hoàn toàn không?

Không. npm vẫn là hệ sinh thái gói lớn nhất, và hầu hết các gói đều an toàn. Mục tiêu là giảm thiểu rủi ro của bạn thông qua việc ghim phiên bản chính xác, thực thi lockfile, chặn script và giảm thiểu các phần phụ thuộc. Hãy xem xét liệu mỗi phần phụ thuộc có cần thiết không, và sử dụng các lựa chọn thay thế native khi có thể.

Apidog giúp giảm rủi ro chuỗi cung ứng npm như thế nào?

Apidog cung cấp client HTTP tích hợp sẵn, trình chạy kiểm thử, máy chủ giả lập và trình tạo tài liệu cho việc phát triển API. Điều này loại bỏ nhu cầu về các gói npm như Axios, node-fetch, Jest, Express (cho giả lập) và các phần phụ thuộc kiểm thử khác. Ít phần phụ thuộc npm hơn có nghĩa là ít vector tấn công hơn trong quy trình làm việc phát triển API của bạn.

Nguồn gốc gói trong npm là gì?

Nguồn gốc gói sử dụng Sigstore để liên kết mật mã một gói đã xuất bản với kho lưu trữ nguồn và môi trường xây dựng CI/CD của nó. Nó chứng minh nơi và cách một gói được xây dựng. Bạn có thể xác minh nguồn gốc bằng npm audit signatures. Các gói được xuất bản thủ công từ máy của nhà phát triển thiếu nguồn gốc, đây là một dấu hiệu đáng ngờ đối với các gói có lượt tải xuống cao.

Có bao nhiêu gói npm độc hại?

Snyk đã xác định hơn 3.000 gói npm độc hại vào năm 2024. Đến quý 4 năm 2025, Sonatype đã chặn 120.612 cuộc tấn công phần mềm độc hại trong một quý trên npm, PyPI và các registry khác. Con số này đang tăng lên. Hầu hết các gói độc hại là các typosquat có lượt tải xuống thấp, nhưng các vụ xâm nhập lớn như Axios chứng minh rằng các gói phổ biến cũng không miễn nhiễm.

Lỗ hổng PackageGate là gì?

PackageGate là một tập hợp sáu lỗ hổng zero-day được tiết lộ vào tháng 1 năm 2026 ảnh hưởng đến npm, pnpm, vlt và Bun. Một phát hiện cho thấy các phần phụ thuộc dựa trên Git có thể mang theo các tệp cấu hình cho phép thực thi mã ngay cả khi các script vòng đời bị vô hiệu hóa. Điều này có nghĩa là ignore-scripts một mình không đủ nếu các phần phụ thuộc của bạn tham chiếu các kho lưu trữ Git. Hãy ghim các phần phụ thuộc Git vào các commit hash cụ thể.

Những điểm chính cần ghi nhớ

Mỗi phần phụ thuộc là một quyết định tin cậy. Bạn càng có ít phần phụ thuộc, bề mặt tấn công của bạn càng nhỏ. Bạn càng áp dụng nhiều lớp xác minh, kẻ tấn công càng khó lọt qua. Hãy xây dựng hệ thống phòng thủ của bạn theo chiều sâu, chứ không phải đơn độc.

Tải xuống ứng dụng

Thực hành thiết kế API trong Apidog

Khám phá cách dễ dàng hơn để xây dựng và sử dụng API