Blog
Catatan teknis seputar web development, DevOps, dan integrasi AI.
500 artikel
- 13.50backend
Dari Buffer Penuh ke Streaming di Endpoint Unggahan
Lima slot dikali 10 MiB per permintaan adalah undangan DoS. Rate limit per pengguna plus streaming multipart menurunkan memori ke sekitar 1 MiB.
TL;DR: Handler lama nampung semua unggahan di RAM, jadi satu request bisa makan 50 MiB dan 100 pemakai serentak bikin 5 GiB. Turunin batas ukuran doang nggak nolong, memori per request dan frekuensi request itu beda masalah. Jadi dipasang rate limit 30 per menit plus streaming: cuma 1 MiB di RAM, sisanya ke disk, file dialirkan, akhirnya ~1 MiB per request.
#go#security#upload - 13.49backend
Pesan Validasi yang Tertelan Error Generik
Service merangkai pesan validasi presisi, handler membalas pesan generik. Pola jembatan meneruskan detail statis hasil audit dengan regresi test.
TL;DR: Service sudah kasih pesan error yang jelas soal batas 100 karakter, tapi helper respondErr menelannya jadi pesan generik. Jawaban generik memang disengaja demi keamanan, tapi aturan bisnis kayak gini justru wajib sampai ke pengguna biar nggak nebak-nebak. Solusinya: teruskan cuma detail yang sudah diaudit sebagai konstanta, lalu kunci pakai regresi test biar nggak balik generik lagi.
#go#error-handling#api - 04.45devops
Gerbang Slice yang Membaca Artefak Program Lain
Satu direktori program tertanam di cmd_slice membuat gerbang validasi lulus dengan bukti milik program lain; pembenahnya satu baris env-override.
TL;DR: Skrip gerbang slice ternyata ngecek direktori program lama, qa-backfill, bukan program yang lagi jalan, karena lokasinya nempel jadi konstanta di kode. Fix-nya cuma satu baris: baca dari env dulu, kalau kosong baru pakai bawaan. Pelajarannya: begitu alat dipakai di konteks kedua, nilai yang beda antar konteks harus naik kelas ke env.
#bash#coding-agent#validasi-input - 04.39devops
Gerbang Commit Butuh Jalur Resmi, Bukan Hanya Penolak
Hook yang menolak commit langsung baru setengah gerbang; wrapper yang tidak pernah diimplementasi mengubah keamanan menjadi gembok total.
TL;DR: Jadi gerbangnya nolak commit padahal hook-nya bener, masalahnya cmd_commit nggak pernah ditulis meski usage string ngaku ada. Fix-nya cuma 40 baris: validasi pesan dulu, lolos baru commit dieksekusi, nggak perlu bypass. Selftest kasus 19 mastiin penolakan bersih, commit pas, dan nggak dobel.
#git-hooks#coding-agent#bash - 04.32devops
Memblokir Git Commit Langsung Lewat Hook PreToolUse
Hook PreToolUse membuat git commit langsung dari sesi agen koding mustahil secara teknis, bukan sekadar dilarang di dokumen.
TL;DR: Jadi gerbang review ini dipasang sebagai hook PreToolUse di Claude Code, bukan hook Git biasa, biar commit langsung dari agen koding bisa diblokir lewat exit 2. Pendaftarannya diselipin di settings pengguna plus sembilan berkas definisi agen, jadi nggak ada celah warisan otomatis. Ujinya udah ditolak dua kali bare, bukti fail-closed-nya works.
#git-hooks#coding-agent#keamanan-proses - 03.45tooling
Auditor Pakai Penggaris yang Sama dengan Gerbang
Laporan audit menuduh delapan commit dokumen tanpa trailer; semuanya false positive. Satu baris filter menyelaraskan kebijakan auditor dengan gerbang.
TL;DR: Laporan audit nandain 19 commit tanpa trailer Security-review, tapi 8 di antaranya cuma file QA atau screenshot yang emang dikecualikan gerbang commit. Akar masalahnya auditor gak baca daftar pengecualian yang sama, jadi hasilnya banyak false positive. Fixnya cuma satu baris filter git show, dan tes nomor 18 jadi hijau semua.
#git#bash#testing - 03.42security
Audit yang Hanya Membaca: Setengah Gerbang yang Sering Hilang
Gerbang commit menolak pesan tanpa trailer dalam sekejap, tapi konfigurasi di baliknya bisa drift diam-diam. Sapuan audit baca-saja menutup celah itu.
TL;DR: Gates commit di KotaPortal nolak kode tanpa trailer Security-review, tapi hook-nya bisa lepas diam-diam gara-gara bit executable ilang atau core.hooksPath pindah. Solusinya subkomando audit di review_gate.sh yang nyapu empat jalur, selalu exit 0, dan ngecek registrasi hook biar nggak dianggap pipeline gagal. Gerbang itu pencegah, audit itu detektif; yang ngawasin gerbang ya gerbang kedua ini.
#git#bash#security - 02.58testing
Checksum Bukti: Angka Test Lulus Itu Klaim Sampai Di_checksum
Output mentah perintah verifikasi dibungkus checksum sha256 otomatis, dan gerbang fail-closed menolak irisan tanpa putusan review terjangkar.
TL;DR: Agen coding bilang tests passed dan coverage 42%, tapi ternyata cuma klaim, nggak ada bukti output mentahnya. Solusinya, skrip shell nyimpen bundel bukti plus checksum sha256, jadi kalau angkanya disunting, ketahuan. Ada juga gerbang fail-closed: irisan nggak boleh disebut selesai kalau review-nya belum PASS semua.
#ai-agents#testing#qa - 02.54devops
Token Status Review: Utang Review yang Bisa Digrep
Empat token review:* plus validator papan membuat utang review agen terlihat, terhitung, dan bisa dibatch tanpa menunda permukaan keamanan.
TL;DR: Review per irisan kan bolak-balik dan boros token, padahal irisan kecil bayarnya sama mahalnya sama yang gede. Jadi tiap baris wajib bawa token review, yang nyentuh keamanan tetap langsung direview, sisanya nunggu dibatch bareng pas antrean numpuk. Untungnya statusnya bisa digrep, jadi nggak ada utang review yang sembunyi di kepala.
#code-review#ai-agents#workflow