security
Catatan teknis seputar web development, DevOps, dan integrasi AI.
52 artikel
- 23.42database
CASCADE Terlalu Setia: Saat Hapus Akun Membawa Konten Pergi
Guard 409 di aplikasi tidak pernah menyala karena CASCADE menghapus konten lebih dulu. Migration 000067 membaliknya: RESTRICT menolak di database, guard baru bicara.
TL;DR: Hapus akun warga ternyata ikut menghabisin semua ulasan, izin, dan pengaduan tanpa peringatan, gara-gara guard aplikasi kalah cepat sama FK CASCADE di database. Solusinya ganti CASCADE jadi RESTRICT lewat migration, biar database yang nolak duluan. Sekarang hapus akun berkonten otomatis ditolak, dan guard ErrHasContent akhirnya bisa jalan dengan respons 409.
#mysql#go#security - 22.34security
Bidang Kosong Bukan Berarti Semua: Koreografi Fail-Closed
Cakupan kosong dulu dianggap ALL demi token lama. Kisah koreografi empat tahap untuk membalik middleware menjadi menolak 403 BIDANG_UNSET.
TL;DR: Dulu kalau kolom bidang kosong, sistem anggap itu akses ALL — bahaya banget, namanya failing open. Solusinya bukan cuma hapus fallback: backfill data, sensus buktiin nol baris kosong, baru middleware nolak dengan 403 BIDANG_UNSET. Sekarang deny-by-default, dua lapis pengecekan, cuma aktor sistem userID 0 yang boleh ALL.
#go#security#rbac - 21.24backend
Ketika Penjaga Tak Bisa Menjawab: Fail-Closed pada Hapus Media
Census pemakaian media error dulu diperlakukan sebagai boleh hapus. Kini ErrCensusUnavailable membatalkan delete: baris dan file tetap aman.
TL;DR: Dulu di KotaPortal tombol hapus media tetap jalan walau kueri sensus gagal, dianggap "tidak dipakai" alias fail-open. Sekarang dibalik jadi fail-closed: kalau error, delete dibatalkan dan client dapet 503 CENSUS_UNAVAILABLE, detail errornya dicatat di server aja. Uji lamanya dirombak biar ngunci perilaku aman ini, file dan data nggak kehapus.
#golang#error-handling#http - 20.39testing
Persen Cakupan Bukan Tameng: Amankan Jalur Penolakan
Audit cakupan middleware Go dari 27 ke 96,7 persen: pelajaran uji lengan penolakan dengan httptest, dari JWT sampai CORS.
TL;DR: Cakupan test middleware cuma 27 persen padahal itu gerbang auth, jalur penolakan kayak token expired dan role mismatch nggak pernah disentuh test. Penulis nambahin 850 baris test ke tujuh file pakai httptest, tanpa ngubah kode produksi. Hasilnya middleware naik ke 96,7 persen, tapi pelajarannya: angka berhenti di tempat mock mulai bohong, yang penting tiap jalur risiko punya saksi.
#golang#testing#security - 14.42tooling
Dua Taraf Hukum Hook Commit di Proyek KotaPortal
Hook commit KotaPortal memisahkan dua taraf hukum: penanda uji yang salah blok keras, permukaan berisiko hanya dapat peringatan plus jejak audit.
TL;DR: review_gate.sh punya dua tingkat: soal kata kunci kayak karakterisasi langsung diblokir, tapi area berisiko kayak autentikasi atau migrasi cuma kasih peringatan. Dua tingkat biar keamanan tetap jalan tanpa ngelambatin kerja tim. Soalnya hook bisa dilewati kok, jadi tujuannya bukan tembok tapi rambu jelas.
#git#git-hooks#security - 13.45tooling
Mesin Penjaga Klaim Review di Pesan Commit
Tiga invarian mesin untuk klaim Security-review: tepat satu, posisi trailer, dan substansi dicek terhadap diff.
TL;DR: Klaim review di pesan commit selama ini cuma perkataan, nggak ada yang ngecek. Jadi repo itu bikin hook commit-msg yang ngetes tiga invarian: baris Security-review: harus tepat satu, posisinya bener, dan klaim tests only dicocokkan sama diff. Hooknya memang bisa di-bypass, tapi tujuannya menaikkan harga kelalaian, bukan nahan penipu.
#git#bash#security - 13.45security
Lima Celah yang Dikunci, Bukan Dibenahi
Lima kelemahan autentikasi dikunci sebagai characterization test bermarker keputusan, dipetakan sebelum diperbaiki.
TL;DR: Lagi riset tes autentikasi, ketemu 5 celah keamanan tapi nggak langsung dibenerin, malah dikunci jadi characterization test lengkap sama penanda keputusan pemilik proyek. Alasannya jujur aja: benerin diam-diam itu ngehapus jejak kenapa perilakunya ada. Jadi mending dipetain dulu semua risikonya, baru owner yang mutusin urutan prioritasnya.
#testing#security#authentication - 18.45security
Baseline ZAP: Nol Kegagalan Bukan Angka Terpenting
Baseline ZAP pasif sebelum QA backfill: nol FAIL, empat WARN, dan tabel delta aturan yang membuktikan OAuth baru tidak menambah alert.
TL;DR: ZAP baseline dijalan ulang abis ada surface baru dari Google OAuth, hasilnya nol FAIL, empat WARN, 57 PASS. Yang keren tuh dibandingin per aturan sama baseline sehari sebelumnya, semua angka turun atau diam, gak ada alert baru. Tapi inget, ini cuma scan pasif tanpa login, jadi bukan audit, cuma tripwire buat halaman publik.
#zap#security-testing#owasp - 14.28ai
Kapan Agent AI Harus Dicabut dari Workflow
Kerangka evaluasi pencabutan agent AI dari produksi: audit excessive agency OWASP dan tanda operasional pematangan arsitektur.
#ai#security#mcp