Peta dunia

 

EN: Read in English

Dunia C4: Perisai Pipeline

pull_request_target dan fork

Anda akan belajar: kenapa PR dari fork tak dapat secret, dan perangkap dalam pull_request_target.

Teks BM belum disemak oleh penutur asli.

Disemak dengan GitHub Actions 2026-10 pada 31 Okt 2026

Masalahnya

Orang asing fork (buat salinan) repo kedai anda dan buka PR. Job pratonton anda perlukan token Cloudflare anda. Patutkah kod mereka dapat token itu?

Pilih satu jawapan.

Cuba

Jalankan kedua-dua event. Cari yang mana pratonton berhenti.

Cuba event satu per satu. Cari yang diminta.

Apa yang berlaku di GitHub

Fail workflow .github/workflows/preview.yml

name: Preview
on:
pull_request:
permissions:
contents: read
jobs:
preview:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- run: npm ci
- run: npx wrangler deploy --env preview
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}

Tali sawat

Pull request · feature → main

Tengok

Sesetengah pasukan mahu pratonton untuk fork juga. Jadi mereka tukar ke pull_request_target: Pencetus PR yang jalan dengan secret dan kunci tulis anda, walaupun untuk fork orang asing. Jangan jalankan kod mereka di situ.. Ia jalan dengan secret anda dan kunci tulis, walaupun untuk fork. Susun dua pencetus ini.

Seret kad ke dalam kotak. Atau ketik kad, kemudian ketik kotak.

      Teka

      Pratonton ini tukar ke pull_request_target. Ia juga check out kod PR itu sendiri. PR fork orang asing sampai. Apa jadi?

      Pilih satu jawapan.

      Tengok

      Pilih satu event. Tekan Run dan tengok tali sawat.

      PR orang asing pada pull_request_target. Setiap stesen jadi hijau, dengan token anda dalam job.

      Apa yang berlaku di GitHub

      Fail workflow .github/workflows/preview.yml

      name: Preview
      on:
      pull_request_target:
      permissions:
      contents: read
      jobs:
      preview:
      runs-on: ubuntu-latest
      steps:
      - uses: actions/checkout@v7
      with:
      ref: ${{ github.event.pull_request.head.sha }}
      - run: npm ci
      - run: npx wrangler deploy --env preview
      env:
      CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
      

      Tali sawat

      Pull request dari fork · stranger:feature → main

      Hijau! npm ci orang asing itu jalan dengan token anda dalam jangkauan. Satu skrip pemasangan yang licik boleh menyalinnya.

      Cuba

      Tekan dua baris yang jadikan workflow ini perangkap.

      Tekan setiap baris yang berisiko. Setiap satu tunjuk serangan dan pembetulannya.

      Fail workflow .github/workflows/welcome.yml

      Semak

      Okey pada pull_request_target, atau perangkap? Leret setiap job.

      Leret ke kanan untuk bagus, ke kiri untuk perlu baiki. Atau guna butang.

      1 / 4

      Tambah label pada PR fork, tanpa check out kodnya

      Tambah label pada PR fork, tanpa check out kodnya

      Anda berjaya!

      Kini anda boleh jauhkan PR orang asing daripada kunci anda.

      Nak tahu lebih (pilihan)

      Corak lebih selamat: uji kod fork dengan pull_request. Perlukan secret selepas itu? Guna workflow berasingan pada workflow_run, dan anggap artifaknya tak dipercayai. Penyumbang kali pertama mungkin perlu kelulusan penyelenggara untuk run mereka. Latihan sebenar: cari pull_request_target dalam repo anda dan semak setiap satu.