backend
Catatan teknis seputar web development, DevOps, dan integrasi AI.
154 artikel
- 19.52backend
Footer Berubah, JSON-LD Tidak: Jebakan Boot Cache Settings API
Menulis baris settings langsung ke database tidak mengubah respons API yang menyimpan snapshot saat boot. Urutan debug tiga lapis dan aturan restart.
TL;DR: Update settings langsung lewat SQL memang masuk di database, tapi endpoint masih balikin nilai lama soalnya API cuma baca snapshot in-memory yang dibuat pas boot. Nulis SQL itu nggak lewat jalur yang bisa refresh snapshot, makanya datanya kelihatan aman tapi nggak pernah kepakai. Solusinya gampang: habis nulis langsung ke DB, tinggal restart API-nya.
#caching#cache-invalidation#debugging - 00.24backend
Mengapa "Artikel Populer" Tetap Menampilkan Item Lama
Query sort=popular pakai view_count total bikin artikel lama selalu menang. Perbaikan: skor 7 hari rolling + tiebreak deterministik + random filler limit 9.
TL;DR: KotaPortal punya masalah di artikel populer. Skor total bukan skor sekarang. Perbaikan pakai skor 7 hari rolling.
#database#performance#mysql - 09.05backend
Filter Enum API Publik: Tiga Lapis Validasi untuk Satu Nilai
Nilai filter display_mode dijaga tiga lapis: handler 400, error sentinel ErrValidation, dan SQL berparameter. SQL WHERE yang lama ikut dirapikan.
TL;DR: Klausa SQL lama bermasalah. Diperbarui dengan routing ulang dan validasi. Selesai dengan tiga lapis keamanan.
#golang#api#sql - 14.15database
Tiga Lapis Kontrak, Satu Typo dari HTTP 500
Validasi aplikasi dan skema openapi menerima tipe baru, kolom ENUM MySQL menolaknya. Error 1265 baru terlihat saat INSERT.
TL;DR: Aplikasi mengalami error 1265 dari MySQL. Error ini disebabkan oleh perbedaan tipe data di tiga lapis yang berbeda. Perlu disinkronkan agar aplikasi berjalan lancar.
#mysql#schema#database-migration - 12.59backend
Formulir staf bidang lain terbuka, padahal role check sudah ada
Role check menjawab siapa boleh mengelola staf, bukan baris mana yang boleh disentuh. Guard kepemilikan bidang menutup celah itu.
TL;DR: Staf bidang lain bisa diedit oleh QA. Role check tidak cukup untuk mengelola staf. Perbaikannya dengan menambahkan guardTargetBidang.
#security#authorization#owasp - 10.49backend
Guard Sebelum Payload: Tulis Persyaratan Dokumen Global-Only
Checklist dokumen lintas modul bisa ditulis siapa pun yang punya izin tulis layanan. Guard kini menolak sebelum payload dibaca, dan penolakannya diam.
TL;DR: Akun uji bisa mengubah dokumen. Guard ditambah untuk cek akses. Bidang-scoped ditolak sebelum validasi.
#go#rbac#api - 03.19backend
Guard yang Menolak Sebelum Payload Diperiksa
Modul Kelembagaan akhirnya punya pemilik: satu guard di lapisan service, satu status 403 tetap, dan satu grup navigasi yang ikut berpindah.
TL;DR: Guard menolak akses sebelum memeriksa payload. Fungsi guardWrite memeriksa bidang pemanggil dan menolak jika bukan olahraga atau global. Peta kepemilikan modul sekarang melayani tiga hal sekaligus.
#go#rbac#authorization - 11.42backend
Satu-satunya Modul Admin Tanpa Write Guard
Audit modul admin menemukan tujuh dari delapan sudah punya write guard per bidang. Satu tertinggal, dan menutupnya berarti menyalin pola modul sebelah.
TL;DR: Tabel audit proyek menunjukkan modul service types belum punya write guard. Modul ini diperbarui dengan menambahkan guard scope. Perbaikan ini membuat akses tulis lebih aman.
#go#security#rbac - 00.20backend
Batas Kolom Harus Dijaga di Validator, Bukan di MySQL
Validasi panjang harus meniru lebar kolom, bukan diserahkan ke database. Ketika 31 karakter menyentuh query, MySQL strict mode menjawab 500.
TL;DR: API mengalami error 500 Internal Server Error. Error ini disebabkan oleh panjang karakter yang melebihi batas. Validator sudah diperbarui untuk menangani masalah ini.
#go#validation#api