Peta dunia

 

EN: Read in English

Dunia C4: Perisai Pipeline

Suntikan skrip

Anda akan belajar: bagaimana tajuk orang asing boleh jadi arahan, dan pembaikan env:.

Teks BM belum disemak oleh penutur asli.

Disemak dengan GitHub Actions 2026-10 pada 31 Okt 2026

Masalahnya

Robot anda ucap terima kasih bila isu baharu dibuka:

- run: echo "Thanks for ${{ github.event.issue.title }}"

Siapa yang tulis tajuk itu?

Pilih satu jawapan.

Tengok

Ketik setiap titik pada garis masa.

Tekan setiap langkah. Tajuk itu jadi kod. Slip pesanan dengan arahan tersembunyi: itulah script injection: Slip pesanan dengan arahan tersembunyi: teks orang asing jadi arahan dalam skrip run: anda. (suntikan skrip).

Teka

Pembaikannya: hantar tajuk melalui env: dulu. Bash kemudian nampak data biasa, bukan kod.

- run: echo "Thanks for $TITLE"
  env:
    TITLE: ${{ github.event.issue.title }}

Tajuk licik yang sama. Apa bash cetak sekarang?

Pilih satu jawapan.

Cuba

Tekan setiap baris di mana teks orang asing jadi kod.

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

Fail workflow .github/workflows/greet.yml

Cuba

Bina robot sambutan yang selamat. Hantar tajuk melalui env:.

Tekan blok untuk tambah. Susun ikut urutan.

Blok

Workflow anda

Tekan satu blok di atas untuk mula.

Fail workflow .github/workflows/

name: Welcome

Apa yang berjalan

Belum ada apa untuk dijalankan.

Semak

Selamat terus dalam run:, atau patut melalui env:? Leret setiap nilai.

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

1 / 4${{ github.event.issue.title }}
${{ github.event.issue.title }}

Anda berjaya!

Kini anda boleh halang teks orang asing daripada jadi arahan.

Nak tahu lebih (pilihan)

Alat boleh tangkap ini untuk anda. actionlint beri amaran bahawa nilai “is potentially untrusted”. CodeQL juga ada semakan. Pembaikan lain: action JavaScript kecil yang terima nilai itu sebagai input. Latihan sebenar: cari github.event dalam baris run: workflow anda.