~/VibeHandbook
PDF miễn phí

Chương 18 · 07

Cổng soát bảo mật (security review gate)

Đây là thói quen duy nhất biến tất cả những điều trên từ một nỗi lo thành một quy trình: trước khi bạn phát hành, hãy để AI tấn công chính mã nó viết ra. Mô hình đã viết ra tính năng thường có thể tìm ra lỗ hổng trong đó — nó chỉ không làm vậy trừ khi bạn yêu cầu. Hãy lật vai trò của nó từ người xây dựng thành kẻ tấn công:

You wrote this endpoint. Now act as an attacker trying to break it.
List every way a malicious user could:
  - read or modify data they shouldn't (authorization holes)
  - inject code via input (SQL injection, XSS, command injection)
  - abuse missing validation or rate limits
For each, show the exact request that exploits it, then the fix.
Don't reassure me — assume there IS a vulnerability and find it.

Câu cuối cùng đó rất quan trọng: nếu để trung tính, AI có xu hướng nói "trông có vẻ an toàn!" Khi được yêu cầu giả định rằng có một lỗ hổng tồn tại, nó thực sự đi tìm kiếm. Hãy kết hợp lượt kiểm tra đối kháng (adversarial pass) này với một danh sách kiểm tra ngắn trước khi phát hành, chạy trên bất cứ thứ gì đối diện người dùng:

  • Mọi đều kiểm tra phân quyền, không chỉ kiểm tra người dùng đã đăng nhập
  • Mọi truy vấn cơ sở dữ liệu đều được tham số hóa — không có dựng bằng ghép chuỗi
  • Đầu vào của người dùng khi hiển thị lên trang đều được escape (không chèn HTML thô)
  • Không có nào trong mã phía client, và không có secret nào bị vào repo
  • .env đã được gitignore; mọi key bị rò rỉ đều đã được xoay vòng
  • Việc tải file lên xác thực loại và kích thước, và dùng tên được sinh ra
  • Các mới đều đã được kiểm tra bằng mắt về sự tồn tại thực và uy tín

Hãy hình dung cổng soát này như một chuỗi mà không gì được phát hành nếu chưa vượt qua. AI đổi vai từ người xây dựng sang kẻ tấn công, sau đó các bản quét tự động sẽ chống lưng cho những gì một lượt kiểm tra của con người có thể bỏ sót:

  feature code
       │
       ▼
 ┌──────────────────┐   "assume there IS a bug, find it"
 │ ADVERSARIAL PASS │   authz holes · injection · validation
 │ (AI as attacker) │
 └────────┬─────────┘
          │ issues found? ── yes ──▶ fix ──┐
          │ no                             │
          ▼                                │
 ┌──────────────────┐ ◀─────────────────── ┘
 │ AUTOMATED GATES  │   secret scan (gitleaks) · npm audit
 │ (CI, every push) │   parameterized? · secrets out of client?
 └────────┬─────────┘
          │ all green
          ▼
        SHIP ✓     ── anything red blocks the push ──

Và hãy chạy một bộ quét secret (secret scanner) trước khi bạn push — một công cụ như gitleaks (hoặc tính năng quét tích hợp sẵn của nền tảng bạn dùng) rà soát mã và lịch sử của bạn để tìm những thứ có hình dạng giống key. Đó là một mạng lưới an toàn chỉ tốn một lệnh cho sai lầm đắt giá nhất trong danh sách này, và bạn có thể nhờ AI gắn nó vào (Continuous Integration — con robot tự động chạy các kiểm tra của bạn mỗi khi bạn push code) để nó chạy trên mỗi lần push.

Muốn bản ngoại tuyến?

Tải trọn cuốn sách dưới dạng PDF hoặc EPUB — miễn phí.