บล็อก

การตรวจสอบความปลอดภัยใน Claude Code: คู่มือทีละขั้นตอนและระบบอัตโนมัติด้วย GitHub Action ในปี 2026

Markdown

วิธีตรวจสอบความปลอดภัยของโปรเจกต์ vibe ด้วย /security-review ใน Claude Code ขั้นตอนการตั้งค่า เทมเพลต GitHub Action ช่องโหว่ 6 ประเภท และข้อจำกัดตามจริง

อ่านบทความฉบับเต็ม

ผู้เขียนเนื้อหาต้นฉบับเล่าถึงประสบการณ์ของตนว่า “ฉันเพิ่งรัน security-review กับโปรเจกต์ vibe ของตัวเอง แล้วทีมก็พบปัญหาจริงหลายจุดภายใน 4 นาที ซึ่งแก้ไขไปแล้ว” งานแบบเดียวกันนี้เคยใช้เวลาทั้งวันสำหรับที่ปรึกษาภายนอก

เนื้อหาเพิ่มเติมเกี่ยวกับการกำหนดค่าเครื่องมืออยู่ในเอกสารประกอบของ Ailoot

/security-review ใน Claude Code คืออะไร?

ประเด็นสำคัญ

/security-review เป็นคำสั่งในตัวของ Claude Code ที่วิเคราะห์ความปลอดภัยของทั้งโปรเจกต์หรือการเปลี่ยนแปลงปัจจุบันได้โดยตรงจากเทอร์มินัล Anthropic เปิดตัวคำสั่งนี้เมื่อวันที่ 20 กุมภาพันธ์ 2026 โดยเป็นส่วนหนึ่งของ Claude Code Security และเปิดให้ผู้ใช้ Pro, Max และ API Console ทุกคนใช้งานได้ ค่าใช้จ่ายของคำขอจะหักจากยอดคงเหลือ Claude API ตามปกติของคุณ

คำสั่งนี้ทำงานได้สองรูปแบบ แบบในเครื่อง: รัน /security-review ในเทอร์มินัล แล้ว Claude จะอ่าน repository และสร้างรายงาน แบบฝั่งเซิร์ฟเวอร์: ติดตั้ง engine เดียวกันเป็น GitHub Action เพื่อให้แสดงความคิดเห็น inline ในทุก Pull Request โดยอัตโนมัติ

ต่างจากเครื่องมือสแกน SAST แบบดั้งเดิม (Snyk Code, Semgrep, SonarQube) /security-review ไม่ได้ทำงานตามกฎตายตัว แต่จะอ่านโค้ดเหมือนวิศวกรที่กำลังตรวจสอบอยู่จริง โดยติดตามการไหลของข้อมูล ทำความเข้าใจว่าคุณใช้ framework ใดและขอบเขตความเชื่อถืออยู่ตรงไหน พร้อมตรวจพบช่องโหว่ที่ไม่มีกฎข้อใดอธิบายไว้

Claude Code Security อ่านและให้เหตุผลเกี่ยวกับโค้ดของคุณเหมือนนักวิจัยด้านความปลอดภัยที่เป็นมนุษย์ โดยทำความเข้าใจว่าคอมโพเนนต์ต่าง ๆ ทำงานร่วมกันอย่างไร ติดตามการเคลื่อนที่ของข้อมูลภายในแอปพลิเคชัน และตรวจพบช่องโหว่ซับซ้อนที่เครื่องมือซึ่งอาศัยกฎมักมองข้าม

— Anthropic, https://www.anthropic.com/news/claude-code-security

ไม่ได้หมายความว่า /security-review จะใช้แทนการทดสอบเจาะระบบจากภายนอกหรือการทดสอบจริงในสภาพแวดล้อม staging ได้ ช่วยทำส่วนหนึ่งของรีวิวโค้ดเบื้องต้นอัตโนมัติได้ แต่บทความไม่ได้วัดสัดส่วนความครอบคลุม audit ต่อไปนี้ฉันจะอธิบายวิธีใช้งานให้ถูกต้องและสิ่งที่ Claude จะพบในโปรเจกต์ของคุณ

รัน /security-review ใน 5 ขั้นตอนได้อย่างไร?

ประเด็นสำคัญ

อัปเดต Claude Code เป็นเวอร์ชันล่าสุด เปิดโปรเจกต์ในเทอร์มินัล รัน /security-review รอรายงาน (1 ถึง 5 นาทีสำหรับโปรเจกต์ทั่วไป) อ่านผลการประเมินระดับความรุนแรง แล้วขอให้ Claude แก้ไขปัญหา คำสั่งนี้ใช้ได้กับทุก stack เช่น Next.js, Django, FastAPI, Rails, Go และ Rust ไม่ต้องตั้งค่าพิเศษ

ขั้นตอนที่ 1. อัปเดต Claude Code คำสั่งนี้ใช้งานได้ตั้งแต่รุ่นที่เผยแพร่เมื่อวันที่ 20 กุมภาพันธ์ 2026

claude update

หากติดตั้ง Claude Code ผ่าน npm คุณก็ทำได้เช่นกัน:

npm install -g @anthropic-ai/claude-code@latest

ตรวจสอบว่า /security-review ปรากฏขึ้นแล้ว:

claude /help | grep security

ขั้นตอนที่ 2. เปิดโปรเจกต์และลงชื่อเข้าใช้ Claude Code

cd ~/projects/my-vibe-project
claude

ขั้นตอนที่ 3. รันคำสั่ง ใน Claude Code ให้พิมพ์คำสั่งนี้:

/security-review

Claude จะดำเนินการวิเคราะห์ 3 ระยะโดยอัตโนมัติ:

  1. การสำรวจบริบทของ repository (Repository Context Research) - อ่านโครงสร้างและระบุ stack, routes และคำสั่งค้นฐานข้อมูล
  2. การวิเคราะห์เปรียบเทียบ (Comparative Analysis) - เปรียบเทียบสถานะปัจจุบันกับรูปแบบช่องโหว่ที่พบบ่อยใน stack นี้
  3. การประเมินช่องโหว่ (Vulnerability Assessment) - แสดงข้อสงสัยแต่ละรายการพร้อมระดับความเชื่อมั่นในสเกล 1-10 โดยรวมเฉพาะผลการตรวจพบที่มีระดับความเชื่อมั่น ≥ 8 ไว้ในรายงาน

ขั้นตอนที่ 4. อ่านรายงาน ผลลัพธ์อยู่ในรูปแบบตาราง Markdown สำหรับแต่ละปัญหา Claude จะระบุ:

  • ไฟล์และหมายเลขบรรทัด (เช่น src/auth/login.ts:42)
  • ระดับความรุนแรง (HIGH / MEDIUM / LOW)
  • หมวดหมู่ (sql_injection, xss, auth_bypass, insecure_storage)
  • คำอธิบาย - มีอะไรผิดพลาด
  • สถานการณ์การโจมตี - ผู้โจมตีอาจนำไปใช้ประโยชน์อย่างไร
  • คำแนะนำ - วิธีแก้ไข

ขั้นตอนที่ 5. ขอให้ Claude แก้ไขปัญหา หลังจากนั้น คุณสามารถทำงานกับ Claude เหมือน agent ทั่วไปได้:

“แก้ไขปัญหาระดับ HIGH จากรายงานทีละรายการ พร้อมคำอธิบาย PR”

Claude จะเปิดแต่ละไฟล์และเสนอการเปลี่ยนแปลง จากนั้นคุณยืนยัน ในโปรเจกต์จริง ฉันปิดผลการตรวจพบ 5 รายการได้ภายใน 40 นาที แทนที่จะใช้เวลา 3 ชั่วโมงตามที่วางแผนไว้

/security-review ตรวจพบช่องโหว่อะไรบ้าง?

ประเด็นสำคัญ

Claude ตรวจพบช่องโหว่ 6 ประเภท ได้แก่ SQL injection และ injection ทั่วไป, XSS, ปัญหาการยืนยันตัวตนและการอนุญาตสิทธิ์, การรั่วไหลของข้อมูลสำคัญ, ช่องโหว่ใน dependencies ของบุคคลที่สาม และ secrets ที่ฝังไว้ในโค้ด คำสั่งนี้ยังจัดการตรรกะการยืนยันตัวตนที่กระจายอยู่ในหลายไฟล์ได้ ซึ่งเครื่องมือสแกนที่อาศัยกฎทำไม่ได้

รายการทั้งหมดที่รวมอยู่ในการวิเคราะห์โดยค่าเริ่มต้นอธิบายไว้ในเอกสารอย่างเป็นทางการของ Anthropic:

หมวดหมู่สิ่งที่ค้นหา
SQL injectionการต่อสตริงโดยตรงใน SQL, การเรียก ORM ที่ไม่ปลอดภัย (raw() โดยไม่มีพารามิเตอร์), Prisma $queryRawUnsafe
XSSการแสดงผลด้วย dangerouslySetInnerHTML โดยไม่ทำ sanitization, ระบบเทมเพลตที่ไม่มีการ escape อัตโนมัติ, innerHTML ที่มาจากข้อมูลผู้ใช้
ข้อบกพร่องด้านการยืนยันตัวตนtoken ที่นำกลับมาใช้ซ้ำได้, ไม่มีการตรวจสอบสิทธิ์ใน API routes, JWT ที่ไม่มีวันหมดอายุ, session fixation
การจัดการข้อมูลที่ไม่ปลอดภัยการตรวจสอบความถูกต้องเฉพาะฝั่ง client, การตอบกลับที่มีฟิลด์เกินจำเป็น (over-fetching), open redirect
ช่องโหว่ใน dependenciesnpm/pip/cargo packages เวอร์ชันที่มีช่องโหว่ โดยตรวจสอบผ่าน npm audit และคำสั่งเทียบเท่า
SecretsAPI keys ที่ฝังไว้ในโค้ด, tokens ใน .env.example, รหัสผ่านในโค้ด

นอกจากนี้ คำสั่งยังครอบคลุมหมวดหมู่ที่เครื่องมือสแกนอัตโนมัติมักตรวจไม่พบ:

  • Command injection - เรียกใช้ข้อมูลจากผู้ใช้ใน shell (child_process.exec(userInput))
  • Path traversal - โหลดไฟล์ด้วย ../../etc/passwd
  • XXE - XML ที่มี external entities
  • Template injection - SSTI ใน Jinja/Handlebars/EJS
  • NoSQL injection - operators $ne, $gt ในคำสั่งค้น MongoDB
  • การใช้คริปโตกราฟีผิดวิธี - ใช้ MD5, โหมด ECB หรือ IV แบบคงที่

Claude กำหนดระดับความรุนแรงให้ผลการตรวจพบแต่ละรายการ โดยใช้สเกลง่าย ๆ ดังนี้:

  • HIGH - โจมตีจากระยะไกลได้โดยไม่ต้องยืนยันตัวตน หรือข้อมูลรั่วไหลที่กระทบผู้ใช้ทั้งหมด
  • MEDIUM - ต้องมีเงื่อนไขเพิ่มเติมจึงจะโจมตีได้ (ต้องมี session / ต้องใช้ข้อมูลนำเข้าเฉพาะ)
  • LOW - เป็นช่องทางที่อาจใช้โจมตีได้ ยังไม่วิกฤตในตอนนี้ แต่ควรแก้ไข

ควรรู้ไว้ว่าในการตั้งค่ามาตรฐาน Claude จะไม่รายงาน DoS, rate limiting, memory exhaustion, open redirects ที่ไม่มีผลกระทบพิสูจน์ได้, regex injection / ReDoS หรือการปลอมแปลง log ทั้งนี้ตั้งใจทำเช่นนี้เพื่อไม่ให้คุณได้รับข้อมูลรบกวนมากเกินไป หากหมวดหมู่เหล่านี้สำคัญ ให้เพิ่มกฎเอง (ดูหัวข้อการกรองผลบวกลวงด้านล่าง)

ตั้งค่า GitHub Action ให้ตรวจสอบอัตโนมัติอย่างไร?

ประเด็นสำคัญ

Anthropic เผยแพร่ action อย่างเป็นทางการ anthropics/claude-code-security-review@main เชื่อมต่อได้ด้วย workflow file เพียงไฟล์เดียว และจะแสดงความคิดเห็น inline ในทุก Pull Request โดยอัตโนมัติเมื่อพบช่องโหว่ ตั้ง CLAUDE_API_KEY กับสิทธิ์ workflow Action ทางการเตือนว่ายังไม่ hardened ต่อ prompt injection และควรรีวิว PR ที่เชื่อถือ ตรวจสิทธิ์ผู้ส่งกับ workflow ก่อนเปิด

ขั้นตอนที่ 1. รับ API key ไปที่ console.anthropic.com สร้าง API key แล้วคัดลอก

ขั้นตอนที่ 2. ใส่ key ไว้ใน repository secrets ใน GitHub ไปที่: Settings → Secrets and variables → Actions → New repository secret ตั้งชื่อ CLAUDE_API_KEY; ค่าให้ใส่ key ของคุณ

ขั้นตอนที่ 3. สร้าง workflow file บันทึกเป็น .github/workflows/security.yml:

name: Security Review

permissions:
  pull-requests: write
  contents: read

on:
  pull_request:

jobs:
  security:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          ref: ${{ github.event.pull_request.head.sha || github.sha }}
          fetch-depth: 2

      - uses: anthropics/claude-code-security-review@main
        with:
          comment-pr: true
          claude-api-key: ${{ secrets.CLAUDE_API_KEY }}

ขั้นตอนที่ 4. รวม branch เข้า main action จะเริ่มทำงานโดยอัตโนมัติเมื่อมี PR ถัดไป

สิ่งที่ action ทำ:

  • ทำงานเมื่อมี Pull Request ที่เปิดอยู่ / มีการ synchronize
  • นำ diff ระหว่าง branch ของ PR กับ main
  • เรียกใช้ engine เดียวกับ /security-review ในเครื่อง
  • โพสต์ความคิดเห็น inline ตรงบรรทัดโค้ดที่พบข้อสงสัย
  • ทำสำเนารายงานฉบับเต็มไว้ใน Job Summary

รายละเอียดสำคัญใน permissions:

  • pull-requests: write - เพื่อโพสต์ความคิดเห็น inline
  • contents: read - เพื่ออ่านโค้ด ไม่มี write action ไม่แก้ไขโค้ดเอง แต่รายงานผลเท่านั้น

สิทธิ์ชุดนี้เพียงพอสำหรับ repository ส่วนตัว สำหรับ repo สาธารณะ คุณอาจระบุ actions: read เพิ่มได้หากใช้ reusable workflows

กรองผลบวกลวงและเปลี่ยนระดับความไวได้อย่างไร?

ประเด็นสำคัญ

action มี inputs 9 รายการที่ใช้กำหนดพฤติกรรมให้เหมาะกับโปรเจกต์ได้ รายการหลัก ได้แก่ exclude-directories (เช่น tests/,fixtures/), false-positive-filtering-instructions (พาธไปยังไฟล์ md ที่มีกฎของคุณในลักษณะ “นี่ไม่ใช่ช่องโหว่เพราะ...”) และ custom-security-scan-instructions สำหรับการตรวจสอบเฉพาะด้านเพิ่มเติม

ตาราง inputs ทั้งหมดของ GitHub Action (แหล่งที่มา: README ของ repository):

Inputค่าเริ่มต้นหน้าที่
claude-api-key-API key ของ Anthropic จำเป็นต้องระบุ
comment-prtrueจะโพสต์ความคิดเห็น inline ใน PR หรือไม่
upload-resultstrueจะบันทึกผลลัพธ์เป็น artifact ไว้ 90 วันหรือไม่
exclude-directories-คั่นรายการด้วยจุลภาค: tests/,docs/,fixtures/
claude-modelclaude-opus-4-1-20250805โมเดลที่จะใช้
claudecode-timeout20ระยะหมดเวลาเป็นนาที
run-every-commitfalseรันทุกครั้งที่ push ไม่ใช่เฉพาะ PR
false-positive-filtering-instructions-พาธไปยังไฟล์ md ที่มีกฎของคุณ
custom-security-scan-instructions-พาธไปยังไฟล์ md ที่มีการตรวจสอบเพิ่มเติม

ตัวอย่างการตั้งค่าการกรองผลบวกลวง สร้างไฟล์ .claude/security/false-positives.md:

# กฎการกรองผลบวกลวงสำหรับโปรเจกต์ของเรา

- การใช้ `dangerouslySetInnerHTML` ทุกกรณีภายใน `src/lib/email/layout.ts` ปลอดภัย -
  HTML ประกอบขึ้นจากเทมเพลตที่เชื่อถือได้ และผ่าน `sanitize-html`
  ตอนเขียนลงฐานข้อมูล ไม่ใช่ตอนแสดงผล
- อย่ารายงาน API keys สำหรับทดสอบที่ฝังไว้ใน `__tests__/fixtures/*.ts`
  keys ทั้งหมดขึ้นต้นด้วย `sk-test-fake-`
- การต่อ SQL ใน `src/lib/admin/migrations.ts` ยอมรับได้ - ไฟล์นี้ทำงาน
  ในฐานะ root เท่านั้น และข้อมูลนำเข้ามาจาก environment variables

เชื่อมต่อไฟล์นี้ใน workflow:

- uses: anthropics/claude-code-security-review@main
  with:
    comment-pr: true
    claude-api-key: ${{ secrets.CLAUDE_API_KEY }}
    false-positive-filtering-instructions: .claude/security/false-positives.md

คำสั่งสแกนความปลอดภัยแบบกำหนดเอง ก็ทำในลักษณะเดียวกัน สร้างไฟล์ที่มีกฎซึ่งสำคัญต่อโปรเจกต์ของคุณโดยเฉพาะ:

# การตรวจสอบเพิ่มเติมสำหรับโปรเจกต์ของเรา

- endpoint ทุกตัวภายใต้ `/api/admin/*` ต้องตรวจสอบบทบาทผู้ดูแลระบบ
  ผ่าน wrapper ที่ใช้ร่วมกัน หากไม่มี wrapper นี้ ให้จัดเป็นระดับ HIGH
- webhooks ของ YooKassa / CloudPayments ทุกตัวต้องตรวจสอบลายเซ็นก่อน
  แยกวิเคราะห์ body หากไม่ทำ ให้จัดเป็นระดับ HIGH
- magic-link tokens ต้องใช้ได้ครั้งเดียว (ทำเครื่องหมายว่าใช้แล้วหลังจาก
  คำขอที่ถูกต้องครั้งแรก) tokens ที่ใช้ซ้ำได้ให้จัดเป็นระดับ MEDIUM

นี่ไม่ใช่ preset ของ Anthropic อีกต่อไป แต่เป็นการถ่ายทอดความเชี่ยวชาญเกี่ยวกับโปรเจกต์ของคุณลงในกฎที่ Claude ใช้ทุกครั้ง นี่คือหัวใจของ “ให้ความสำคัญกับวิธีการมากกว่าโมเดล”

ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีจัดการ context สำหรับ Claude ได้ในคู่มือ “วิธีกำหนดค่า CLAUDE.md” และ “Second Brain ใน Claude Code”

Claude ตรวจไม่พบอะไร และเพราะเหตุใด: ข้อจำกัดตามจริง

ประเด็นสำคัญ

การรีวิวโค้ดเองไม่ได้ทดลองแอปที่รันหรือยืนยัน environment ที่ deploy มันอาจชี้ race conditions ตรรกะธุรกิจ หรือ config ที่สงสัยในโค้ดได้ แต่ต้องใช้ staging tests กับตรวจ deployment จริงเพื่อยืนยันพฤติกรรมและความเสี่ยงที่เหลือ

Anthropic ระบุชัดเจนว่าสิ่งใดถูกปิดไว้โดยค่าเริ่มต้นและเพราะเหตุใด (แหล่งที่มา: README ของ repository):

  • Denial of Service - สร้างข้อมูลรบกวนมากเกินไปและแทบไม่มีผลกระทบรุนแรง
  • ข้อกังวลเรื่อง Rate limiting - จัดการในระดับโครงสร้างพื้นฐาน ไม่ใช่ในโค้ด
  • การใช้หน่วยความจำ / CPU จนหมด - เช่นเดียวกัน
  • การตรวจสอบข้อมูลนำเข้าทั่วไปโดยไม่มีผลกระทบที่พิสูจน์ได้ - การตรวจสอบทุกฟิลด์ทำให้เกิดผลบวกลวงจำนวนมาก
  • Open redirect - มักเป็นพฤติกรรมที่ตั้งใจไว้

สิ่งที่รีวิวโค้ดอย่างเดียวตรวจให้ครบไม่ได้หากไม่มีหลักฐาน runtime หรือ deployment:

  • การตั้งค่าเซิร์ฟเวอร์ production NGINX headers, CORS policies, TLS settings และพอร์ตที่เปิดรับการเชื่อมต่อ ต้องตรวจสอบด้วยตนเองในสภาพแวดล้อม staging
  • Race conditions เช่น การจ่ายเงินคืนซ้ำซ้อนเมื่อมีคำขอคืนเงินพร้อมกัน การวิเคราะห์ static ชี้รูปแบบน่าสงสัยได้ แต่พฤติกรรมพร้อมกันยังต้องทดสอบ
  • ข้อบกพร่องในตรรกะธุรกิจด้านการชำระเงิน หากคำนวณยอดรวมคำสั่งซื้อที่ฝั่ง client แล้วส่งไปยังผู้ให้บริการชำระเงินตรง ๆ นั่นมีระดับความรุนแรง HIGH แต่ Claude อาจมองไม่เห็นรูปแบบนี้เสมอไปหากไม่มีบริบทชัดเจนเกี่ยวกับวิธีการทำงานของการชำระเงิน
  • IDOR ระดับฐานข้อมูล หากคำสั่งค้น SELECT * FROM orders WHERE id = $1 ไม่ตรวจ WHERE user_id = $session.userId Claude มักตรวจพบ แต่หากตรวจสอบผ่าน ORM middleware และ Claude มองไม่เห็นการไหลของข้อมูลทั้งหมด ก็อาจพลาดได้
  • การต้านทาน social engineering / phishing เรื่องนี้ไม่เกี่ยวกับโค้ด

ใช้ /security-review เป็นรีวิว static เริ่มต้น ตามด้วยการทดสอบ dynamic ใน staging การตรวจบทบาทกับสิทธิ์ SAST ที่เกี่ยวข้อง และตรวจ config ที่ deploy จริง เช่น Coolify / Nginx / Redis / S3 ที่นี่ยังไม่ยืนยันเปอร์เซ็นต์ครอบคลุมที่วัดแล้ว

กำหนดขอบเขตและเวลาประเมินภายนอกจากความเสี่ยงกับการเปลี่ยนระบบ ทั้งคำสั่งเดียวและ audit ภายนอกเป็นระยะไม่ยืนยันความปลอดภัยครอบคลุม 100%

ผู้เขียนเนื้อหาต้นฉบับตรวจสอบความปลอดภัยของโปรเจกต์ vibe อย่างไร

ประเด็นสำคัญ

ฉันรัน /security-review กับโปรเจกต์ TypeScript ของตัวเองที่ใช้ Next.js, Prisma, PostgreSQL และ Redis ภายใน 4 นาที คำสั่งทำการตรวจสอบเบื้องต้นและพบปัญหาหลายรายการที่มีหลักฐานรองรับอย่างดีและมีระดับความรุนแรงแตกต่างกัน สุดท้ายฉันแก้ไขปัญหาที่ใช้งานได้จริงเสร็จภายในหนึ่งชั่วโมงครึ่ง วิธีนี้ถูกกว่าและเร็วกว่าการทดสอบเจาะระบบจากภายนอกทุกแบบ

พบอะไรบ้าง ภาพโดยทั่วไปของโปรเจกต์ vibe ทั่วไปในขั้น “ทำงานบน production ได้แล้ว แต่ยังไม่ได้ตรวจสอบ”: มีข้อสงสัยหลายจุดเกี่ยวกับขั้นตอนการยืนยันตัวตน ตรรกะการประมวลผล webhooks จากระบบชำระเงิน การจัดการอัปโหลดไฟล์ และข้อสังเกตเฉพาะอีกสองสามจุดเกี่ยวกับการจัดการ HTML ขณะ render ฉันจะไม่เปิดเผยรายละเอียดต่อสาธารณะ เพราะมีคำแนะนำบางส่วนที่นำไปใช้แล้ว ส่วนที่เหลือยังอยู่ใน PR การสแกนแรกในโปรเจกต์ที่รายงานมีประโยชน์และเร็ว แต่ไม่ยืนยันเปอร์เซ็นต์ audit หรือเวลาจบทั่วไป

สิ่งที่ฉันตัดออกว่าเป็นผลบวกลวง:

  • ผลการตรวจพบเกี่ยวกับ DoS จาก regex ในการตรวจสอบข้อมูลนำเข้า - ภาระงานจริงไม่ได้ตกอยู่กับ regex เหล่านั้น
  • ผลการตรวจพบหนึ่งรายการเกี่ยวกับ API key ที่ฝังไว้ในโค้ด - เป็น key สำหรับทดสอบที่มี prefix fake- ระบุชัดเจนใน fixtures

ใช้เวลานานเท่าไร การรันเองใช้เวลา 4 นาที อ่านรายงานใช้เวลา 25 นาที การแก้ไขใช้เวลาประมาณหนึ่งชั่วโมงรวมการทดสอบ ทั้งหมดประมาณหนึ่งชั่วโมงครึ่งตั้งแต่ “เริ่มต้น” จนถึง “ทุกอย่างอยู่ใน main” การทดสอบเจาะระบบจากภายนอกบนพื้นที่เดียวกันใช้เวลาหนึ่งสัปดาห์ตามปฏิทินและมีค่าใช้จ่ายสูงกว่าหลายสิบเท่า

/security-review ให้ข้อค้นพบระดับโค้ดที่มีประโยชน์ได้ ดังที่ผู้เขียนรายงานสแกนสี่นาที ต้องรีวิวและทดสอบการแก้ แล้วตรวจ runtime กับ config ที่ deploy แยก การสแกนไม่ได้กำจัดความเสี่ยงความปลอดภัยของโปรเจกต์

ผสาน /security-review เข้ากับขั้นตอน pre-commit อย่างไร?

ประเด็นสำคัญ

ก่อน commit การแก้สำคัญ ให้รัน /security-review ในเซสชันโปรเจกต์ อ่านข้อค้นพบ แก้ปัญหาที่ตรวจยืนยัน และรัน test ที่เกี่ยวอีกครั้ง นี่เป็นขั้นรีวิว ไม่ใช่ข้อห้าม commit ที่บังคับทางเทคนิค

hook เดิมที่ใช้ git_commit, --severity HIGH และ --fail-on-find ไม่ใช่สูตรทำงานที่มีเอกสารรองรับ ห้ามใช้เป็น security gate บทความนี้ไม่มี hook บล็อก commit ในเครื่องที่ยืนยันแล้ว GitHub Action ทางการด้านบนให้ข้อค้นพบ PR อัตโนมัติ อย่าอนุมานว่าบล็อก commit หรือ merge เพียงเพราะแสดงความคิดเห็นใน PR

อ่านคำอธิบาย hooks ฉบับเต็มได้ในคู่มือ “Hooks ใน Claude Code”

อีกทางเลือกหนึ่งคือใช้ routines สร้าง routine ชื่อ pre-deploy-check ที่รัน /security-review + npm run build + npm run test ด้วยคำสั่งเดียว ดูเนื้อหาเพิ่มเติมได้ในเอกสารประกอบของ Ailoot

หากใช้ MCP servers คุณสามารถเชื่อมผลการตรวจพบจาก /security-review เข้ากับระบบจัดการเหตุการณ์ (Sentry, Linear, Notion) เพื่อให้ผลการตรวจพบระดับ HIGH แต่ละรายการกลายเป็น ticket โดยอัตโนมัติ

คำถามที่พบบ่อยเกี่ยวกับ /security-review

ประเด็นสำคัญ

คำถามที่พบบ่อย 5 ข้อ: มีค่าใช้จ่ายเท่าไร ควรรันบ่อยแค่ไหน ใช้กับ stack ใดได้บ้าง ควรทำอย่างไรหาก Claude พบช่องโหว่นี้แล้ว และรันเฉพาะบางไฟล์ได้หรือไม่ คำตอบสั้น กระชับ ไม่มีน้ำท่วมทุ่ง

รันหนึ่งครั้งมีค่าใช้จ่ายเท่าไร? ขึ้นอยู่กับขนาดโปรเจกต์ สำหรับโค้ด 30K บรรทัดของฉัน การรันหนึ่งครั้งใช้ยอดคงเหลือ API ประมาณ $0.30-0.50 ส่วน repository องค์กรขนาดใหญ่ที่มีหนึ่งล้านบรรทัดอาจมีค่าใช้จ่ายสูงถึง $5-8 ต่อครั้ง ซึ่งถูกกว่าค่าสมัครใช้บริการ SaaS scanner หลายสิบเท่า

ควรรันในเครื่องบ่อยแค่ไหน? อย่างน้อยที่สุด ก่อนเผยแพร่ขึ้น production ทุกครั้ง พิจารณารันก่อน commit และ PR ที่สำคัญด้วย แต่บทความนี้ไม่มี hook อัตโนมัติบล็อก commit ที่ยืนยันแล้ว

ใช้กับ stack ใดได้บ้าง? ใช้ได้กับทุก stack ที่ Claude อ่านได้ จากการสังเกตของผู้เขียน มีการทดสอบกับ Next.js / Node.js, Python (Django, FastAPI), Go, Rust, PHP (Laravel) และ Ruby on Rails คุณภาพจะต่ำกว่าในภาษาเฉพาะทางมาก ๆ (Erlang, Elixir, Clojure) แต่ก็ยังตรวจพบปัญหาได้บ้าง

ควรทำอย่างไรหาก Claude พบ “ช่องโหว่” เดิมทุกครั้ง ทั้งที่จริงแล้วไม่ใช่ช่องโหว่? เพิ่มรายการนั้นใน false-positive-filtering-instructions พร้อมอธิบายว่า “ทำไมจึงปลอดภัย” Claude จะหยุดรายงานในการรันครั้งต่อ ๆ ไป

รันเฉพาะบางไฟล์ได้ไหม? ได้ เมื่อรันในเครื่อง ให้เรียก /security-review src/lib/auth/*.ts ส่วน GitHub Action ตรวจเฉพาะ diff ของ PR ปัจจุบัน ซึ่งโดยทั่วไปก็คือความหมายของ “ไฟล์เฉพาะ”

แหล่งที่มา

แหล่งที่มา

ดูเนื้อหาเพิ่มเติมได้ในเอกสารประกอบของ Ailoot

รายละเอียดเพิ่มเติม

คำถามที่พบบ่อย

รายงาน security-review สะอาดพิสูจน์ว่าแอปปลอดภัยหรือไม่?

ไม่พิสูจน์ เป็นรีวิวโค้ดเริ่มต้นที่อาจพลาดและมีการกรอง ตรวจการแก้ ทดลองบทบาทกับความพร้อมกันใน staging และตรวจ config ที่ deploy จริง

GitHub Action ที่แสดงบล็อก commit หรือ merge อัตโนมัติหรือไม่?

workflow ที่แสดงยังไม่ยืนยันการรับประกันนั้น มันส่งข้อค้นพบใน PR ต้องรีวิวและทดสอบปัญหายืนยัน บทความไม่มี hook บล็อก commit ในเครื่องที่ตรวจแล้ว

บทความทั้งหมด