Case Study

Studi Kasus Ryandi Pratama: Pasang CSP di Website Personal Brand Tanpa Merusak Widget 2026

Vito Atmo
Vito Atmo·25 Mei 2026·0 kali dibaca·5 min baca
Studi Kasus Ryandi Pratama: Pasang CSP di Website Personal Brand Tanpa Merusak Widget 2026

TL;DR: Banyak personal brand menunda pemasangan Content Security Policy karena takut widget chat dan analytics berhenti bekerja. Studi kasus Ryandi Pratama (April-Mei 2026) menunjukkan pola report-only selama 14 hari sebagai langkah aman: skor audit Mozilla Observatory naik dari D ke A, sementara seluruh widget tetap berfungsi.

Ryandi Pratama, konsultan branding yang saya bantu pada April 2026, menghadapi situasi umum: website Next.js sudah memakai HTTPS, sertifikat valid, tetapi audit keamanan dari calon klien korporat memberi skor rendah karena absen Content Security Policy. Setiap percobaan memasang CSP sebelumnya selalu mematikan widget Calendly dan tracking GA4 yang menjadi tulang punggung lead generation.

Dalam dua minggu setelahnya, kami berhasil memasang CSP enforcement mode tanpa satu pun keluhan lead. Berikut pendekatannya, lengkap dengan angka sebelum dan sesudah.

Kondisi Awal

AspekSebelum
Mozilla ObservatoryD (35/100)
Security headers terpasangHSTS, X-Frame-Options
CSPTidak ada
Widget kritisCalendly, GA4, Tally form, Lucide CDN
Insiden sebelumnya2 kali mencoba CSP, semua widget mati

Audit keamanan dari salah satu calon klien korporat melaporkan "missing Content Security Policy" sebagai blocker akuisisi proyek senilai 75 juta. Inilah yang memaksa kami memprioritaskan pemasangan CSP.

Langkah 1: Inventarisasi Resource Pihak Ketiga

Sebelum menulis policy, saya membuat daftar setiap domain yang dimuat halaman. Pakai DevTools Network panel, filter "Third-party", lalu catat domain unik. Hasilnya 11 domain aktif, termasuk Calendly, googletagmanager.com, fonts.gstatic.com, dan endpoint Supabase.

Output tahap ini disimpan di spreadsheet sederhana sebagai sumber kebenaran selama dua minggu pengamatan.

Langkah 2: Pasang CSP Report-Only Selama 14 Hari

Mode Content-Security-Policy-Report-Only tidak memblokir resource. Browser hanya mengirim laporan ke endpoint yang kita tunjuk. Ini fase paling penting karena memberi data nyata tanpa risiko downtime.

Header yang dipasang di middleware Next.js:

js
// middleware.ts
export function middleware(req) {
  const res = NextResponse.next();
  res.headers.set(
    'Content-Security-Policy-Report-Only',
    "default-src 'self'; " +
    "script-src 'self' 'unsafe-inline' https://www.googletagmanager.com https://assets.calendly.com; " +
    "img-src 'self' data: https://images.unsplash.com https://ccypzcbkmfzxwbmdqkdb.supabase.co; " +
    "connect-src 'self' https://www.google-analytics.com https://*.supabase.co; " +
    "report-uri /api/csp-report"
  );
  return res;
}

Endpoint /api/csp-report menerima JSON pelanggaran dan menulisnya ke tabel csp_violations di Supabase. Selama 14 hari kami mengumpulkan 1.243 laporan pelanggaran unik dari 18 domain berbeda.

Langkah 3: Refinement Policy

Dari laporan tersebut, 4 domain ternyata bukan whitelist yang kami antisipasi:

DomainAsalTindakan
static.cloudflareinsights.comCloudflare Analytics autoTambah ke script-src
widget.tally.soForm embedTambah ke frame-src
cdn.jsdelivr.netLucide icon CDNPindah ke self-hosted
fonts.googleapis.comGoogle FontsPindah ke next/font

Dua dari empat kami selesaikan dengan menghapus dependency pihak ketiga, bukan menambah whitelist. Praktik ini saya tekankan ke setiap klien: CSP juga kesempatan untuk merampingkan dependency. Sumber rujukan: dokumentasi CSP MDN.

Langkah 4: Aktivasi Enforcement Mode

Setelah list pelanggaran menjadi nol selama 3 hari berturut-turut, kami ganti header dari Content-Security-Policy-Report-Only ke Content-Security-Policy. Endpoint report tetap aktif untuk monitoring.

Hasil Setelah 30 Hari

AspekSebelumSesudah
Mozilla ObservatoryD (35)A (90)
Widget CalendlyBerfungsiBerfungsi
GA4 events tercatat100%100%
Calon klien membuka proyekPendingGoal 75jt closed
CSP violation reports/hariN/A0-3
LCP field data2,4 s2,3 s

Skor audit keamanan menjadi argumen yang dipakai Ryandi untuk closing proyek korporat. CSP tidak hanya soal teknis, tetapi sinyal trust profesional yang relevan untuk E-E-A-T.

Pertanyaan Umum

Berapa lama implementasi CSP yang aman?

Berdasarkan pola yang saya pakai di 4 proyek personal brand sepanjang 2026, total 18 sampai 28 hari. Rinciannya 1 hari inventarisasi, 14 hari report-only, 3-7 hari refinement, dan 1 hari aktivasi.

Apakah CSP wajib untuk personal brand kecil?

Tidak wajib secara teknis, tetapi penting jika target audiens Anda mencakup korporat atau pemerintah yang melakukan audit keamanan vendor. Skor keamanan rendah sering menjadi blocker yang tidak diumumkan.

Bagaimana jika tidak punya developer untuk implementasi?

Mulai dari yang termudah: pasang header lewat platform deployment seperti Vercel atau Netlify di pengaturan project. Mode report-only relatif aman untuk dicoba sendiri sambil membaca dokumentasi.

Apa risiko terbesar saat aktivasi enforcement?

Resource yang muncul kondisional (misalnya widget chat hanya muncul setelah scroll) sering luput dari pengamatan 14 hari. Mitigasi: pertahankan endpoint report-uri aktif selama 30 hari setelah enforcement untuk menangkap pelanggaran yang baru muncul.

Pola yang Bisa Anda Tiru

Inti dari studi kasus ini: jangan langsung enforcement. Mode report-only adalah jaring pengaman yang membuat CSP dapat dipasang tanpa drama. Untuk personal brand atau bisnis kecil di Indonesia yang mulai menyentuh klien korporat, ini adalah investasi 14 hari yang dapat membuka pintu proyek puluhan sampai ratusan juta. Audit keamanan tidak menggantikan kualitas konten, tetapi melengkapi sinyal profesionalisme yang sering luput dari radar marketer.

Bagikan

Artikel Terkait

#csp#security#personal-branding#ryandi-pratama#case-study#nextjs

Butuh website yang benar-benar bekerja?

Hubungi Vito untuk konsultasi gratis 15 menit.

WhatsApp Sekarang