Jelajahi dokumentasi
Cakupan dan prasyarat
Baru mengenal pendekatan ini? Baca mengapa kode buatan AI tetap perlu tinjauan keamanan, lalu gunakan alur tinjauan untuk menentukan cakupan dan bukti. Ikuti batas keamanan sebelum membagikan input nyata.
Tutorial ini mendukung topik autentikasi/API dalam rencana editorial kami. Gunakan Node.js 24+ dan direktori lokal sementara. Tidak diperlukan server, kredensial, data pengguna nyata, atau penyedia model. Instruksi Linmas 0.8.0 diperiksa pada 2026-09-08; tidak ada klaim pengujian host Codex atau Claude.
1. Periksa input lengkap
Simpan kode berikut sebagai authorization-review.mjs, atau unduh fixture. Varian yang sengaja dibuat rentan hanya untuk pembelajaran lokal.
import assert from 'node:assert/strict';
// Synthetic, in-memory fixture: never deploy the deliberately vulnerable variant.
const documents = [{ id: 'doc-1', owner: 'alice', text: 'Synthetic note' }];
function readDocument(user, id, enforceOwner) {
if (!user || typeof user.id !== 'string' || !user.id) return { status: 401 };
if (typeof id !== 'string' || !/^doc-[0-9]+$/.test(id)) return { status: 400 };
const document = documents.find((entry) => entry.id === id);
if (!document || (enforceOwner && document.owner !== user.id)) return { status: 404 };
return { status: 200, body: document.text };
}
assert.equal(readDocument({ id: 'bob' }, 'doc-1', false).status, 200);
console.log('BEFORE: reproduced cross-user read in the deliberately vulnerable fixture.');
assert.equal(readDocument({ id: 'bob' }, 'doc-1', true).status, 404);
assert.equal(readDocument({ id: 'alice' }, 'doc-1', true).status, 200);
assert.equal(readDocument(null, 'doc-1', true).status, 401);
assert.equal(readDocument({ id: 'alice' }, '../secret', true).status, 400);
assert.equal(readDocument({ id: 'alice' }, 'doc-9', true).status, 404);
console.log('AFTER: cross-user denied; owner allowed; anonymous, invalid, and missing inputs handled.');2. Minta tinjauan dengan cakupan terbatas
Setelah memasang dan memverifikasi Peninjau Keamanan Kode, berikan fixture ini kepada host yang diizinkan:
Tinjau authorization-review.mjs menggunakan linmas-secure-code-reviewer. Telusuri apakah Bob bisa membaca dokumen Alice saat enforceOwner bernilai false. Pisahkan bukti dari asumsi; usulkan perbaikan terkecil dan pengujian untuk pemilik, pengguna lain, pengguna anonim, input tidak valid, dan dokumen tidak ditemukan. Jangan ubah berkas atau memanggil penyedia langsung.Mengirim prompt ke agen yang dihosting dapat mengirimkan konteks kepada penyedianya. Perintah di bawah tidak memerlukan agen; halaman ini memuat contoh temuan yang ditulis manusia, bukan rekaman keluaran model.
3. Periksa temuan dan perbaikan
Terbukti dalam fixture ini: Bob menerima status 200 ketika pemeriksaan kepemilikan dinonaktifkan. Mencari objek berdasarkan ID bukan otorisasi. Perbaikannya membandingkan ID pengguna terautentikasi dengan pemilik yang tersimpan sebelum mengembalikan isi. Ambil identitas dari autentikasi server yang tepercaya, bukan kolom pemilik dari klien.
Contoh ini menggunakan 404 untuk dokumen yang tidak ada maupun tidak dapat diakses. Sesuaikan pilihan tersebut dengan kontrak API; pastikan pemilik yang sah tetap dapat mengakses. Kode produksi harus selalu memeriksa kepemilikan dan tidak menyediakan sakelar pembelajaran ini.
4. Jalankan verifikasi regresi
node authorization-review.mjsJika Node tidak tersedia atau berkas tidak ditemukan, ikuti panduan pemecahan masalah pemasangan. Jalankan perintah dari direktori berkas unduhan, atau berikan path absolutnya dalam tanda kutip.
Kode keluar yang diharapkan: 0. Keluaran yang diharapkan:
BEFORE: reproduced cross-user read in the deliberately vulnerable fixture.
AFTER: cross-user denied; owner allowed; anonymous, invalid, and missing inputs handled.Assertion yang gagal menghasilkan kode keluar bukan nol. Periksa kasus yang gagal, jangan hapus assertion. Pemeriksaan ini hanya menguji otorisasi dalam memori, bukan sesi, kueri basis data, peran tenant, transport, atau pembaruan serentak.
5. Catat bukti
Catat revisi input, perintah, runtime, keluaran yang diamati, bagian yang belum diuji, dan keputusan manusia. Assertion lokal bukan Review Capsule Linmas atau bukti tinjauan model. Untuk rekaman bukti penyedia, ikuti dokumentasi Review Capsule dengan persetujuan eksplisit dan input yang sudah dibersihkan.
Lanjutkan dengan metode tinjauan atau arahkan perubahan lintas bidang. Tinjauan manusia tetap wajib.