SAST 靜態分析

Vibe Prompt

「幫我在 GitHub Actions 中加入 SonarQube 掃描,檢查 JavaScript/TypeScript 的安全漏洞。」

GitHub Actions + SonarQube

name: SAST Scan

on:
  push:
    branches: [main, develop]
  pull_request:
    branches: [main]

jobs:
  sonar:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: SonarQube Scan
        uses: SonarSource/sonarcloud-github-action@master
        env:
          SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

CodeQL 掃描

- name: Initialize CodeQL
  uses: github/codeql-action/init@v3
  with:
    languages: javascript, python

- name: Autobuild
  uses: github/codeql-action/autobuild@v3

- name: Perform CodeQL Analysis
  uses: github/codeql-action/analyze@v3
  with:
    category: "/language:javascript"

SAST 工具比較

| 工具 | 語言 | 類型 | |------|------|------| | SonarQube | 多語言 | 程式碼品質 + 安全 | | CodeQL | 多語言 | 深層安全分析 | | Snyk | 多語言 | 開源漏洞 + IaC | | Semgrep | 多語言 | 自訂規則 | | Bandit | Python | 安全掃描 |

Vibe Prompt

「幫我寫 Semgrep 規則:檢測 Python 程式碼中的 SQL Injection。」

rules:
  - id: sql-injection-detection
    patterns:
      - pattern: |
          $CURSOR.execute("..." + $USER_INPUT + "...")
      - pattern: |
          f"SELECT ... WHERE id = {$USER_INPUT}"
    message: "偵測到可能的 SQL Injection"
    languages: [python]
    severity: ERROR

會員專屬免費教學

本章節為註冊會員專屬的免費開放內容!請先登入或註冊會員,即可立即解鎖閱讀。

立即登入 / 註冊