Skip to main content
Back to blog

Panduan SEO Langkah 7: Keamanan — Landasan yang Diharapkan Google pada 2026

·12 min read·by LANGR SEO

Panduan SEO Langkah 7: Keamanan

Ini adalah Langkah 7 dari Panduan SEO 13 Langkah. Keamanan bukan hanya tentang melindungi pengguna — ini berdampak langsung pada peringkat pencarian Anda. Google telah menggunakan HTTPS sebagai sinyal peringkat sejak 2014, dan harapan hanya meningkat.


Sebagian besar pemilik situs menganggap keamanan sebagai sesuatu yang sederhana: "Kami memiliki SSL, jadi kami aman." Nyatanya, Google mengevaluasi puluhan sinyal keamanan. Situs dengan header keamanan yang tepat, sertifikat valid, dan tanpa konten campuran lebih unggul dibandingkan situs yang hanya memiliki sertifikat SSL dasar — semua hal lainnya sama.

Kabar baiknya: sebagian besar perbaikan keamanan adalah konfigurasi sekali jalan. Atur sekali, dan mereka melindungi peringkat Anda selamanya.

Konfigurasi SSL

SSL (secara teknis TLS) mengenkripsi koneksi antara server Anda dan pengunjung. Sejak 2014, Google telah secara eksplisit mengkonfirmasi HTTPS sebagai sinyal peringkat. Pada 2026, tidak memiliki HTTPS bukan hanya masalah peringkat — Chrome menandai situs HTTP sebagai "Tidak Aman" di bilah alamat, menghancurkan kepercayaan pengguna.

Persyaratan untuk SSL yang tepat:

| Persyaratan | Mengapa | Cara Memeriksa | |-------------|---------|----------------| | Sertifikat valid | Kadaluarsa = peringatan browser = pengguna yang keluar | Periksa tanggal kedaluwarsa | | Rantai lengkap | Rantai yang tidak lengkap gagal di beberapa perangkat | Uji SSL Labs | | TLS 1.2+ | Versi lama memiliki kerentanan yang diketahui | Uji SSL Labs | | Tanpa SHA-1 | Sudah usang, browser menolak | Rincian sertifikat | | Cakupan SAN | www dan non-www harus keduanya dicakup | Rincian sertifikat | | Pembaruan otomatis | Mencegah bencana kadaluarsa | Konfigurasi Let's Encrypt / penyedia |

Penilaian SSL:

100% = Sertifikat Valid + Rantai Lengkap + TLS 1.3 + Cipher Kuat + Pembaruan Otomatis
  0% = Sertifikat kadaluarsa atau hilang

Kesalahan umum SSL:

  1. Sertifikat kadaluarsa tanpa pemberitahuan — Atur pemantauan (Langkah 6) minimal 30 hari sebelum kadaluarsa
  2. Rantai sertifikat yang tidak lengkap — Server harus mengirim sertifikat perantara, bukan hanya yang utama
  3. Konten campuran — Halaman HTTPS memuat sumber daya HTTP (gambar, skrip, stylesheet)
  4. Loop pengalihan — Siklus HTTP → HTTPS → HTTP yang disebabkan oleh CDN/proxy yang salah konfigurasi
  5. Ketidaksesuaian non-www dan www — Sertifikat mencakup satu tetapi tidak yang lain

Quick win: Jalankan domain Anda melalui SSL Labs (ssllabs.com/ssltest). Apa pun di bawah peringkat "A" memiliki masalah yang dapat ditindaklanjuti. Sebagian besar penyedia hosting memperbaikinya dengan satu klik.

Header Keamanan

Header keamanan adalah header respons HTTP yang memberi tahu browser cara bertindak saat memuat situs Anda. Mereka mencegah seluruh kategori serangan — dan crawler Google memeriksa mereka.

Header keamanan yang penting:

Content-Security-Policy (CSP)

CSP adalah header keamanan yang paling kuat. Ini memberi tahu browser dengan tepat sumber daya mana (skrip, gaya, gambar, font) yang diizinkan untuk dimuat di halaman Anda.

Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' https://fonts.gstatic.com; connect-src 'self' https://api.example.com; frame-ancestors 'none';

Apa yang CSP cegah:

  • Serangan cross-site scripting (XSS)
  • Serangan injeksi data
  • Clickjacking (melalui frame-ancestors)
  • Eksekusi skrip yang tidak sah (cryptominers, injektor iklan)

Strategi penerapan CSP:

  1. Mulai dengan Content-Security-Policy-Report-Only (mencatat pelanggaran tanpa memblokir)
  2. Pantau laporan selama 1-2 minggu
  3. Daftarkan sumber yang sah
  4. Beralih ke mode penegakan
  5. Tambahkan report-uri atau report-to untuk logging pelanggaran yang sedang berlangsung

X-Frame-Options

Mencegah situs Anda disematkan dalam iframe di domain lain (perlindungan clickjacking).

X-Frame-Options: DENY

Atau jika Anda perlu mengizinkan framing dari asal yang sama:

X-Frame-Options: SAMEORIGIN

X-Content-Type-Options

Mencegah browser dari sniffing MIME-type (mengartikan file sebagai tipe yang berbeda dari yang dinyatakan).

X-Content-Type-Options: nosniff

Satu baris ini mencegah serangan di mana file .jpg berisi JavaScript tersembunyi yang mungkin dijalankan browser.

Referrer-Policy

Mengontrol seberapa banyak informasi referrer yang dikirim saat pengguna mengklik tautan dari situs Anda.

Referrer-Policy: strict-origin-when-cross-origin

Ini mengirim URL lengkap untuk permintaan asal yang sama tetapi hanya asal (domain) untuk permintaan lintas asal. Menyeimbangkan kebutuhan analitik dengan privasi.

Permissions-Policy

Mengontrol fitur browser mana (kamera, mikrofon, geolokasi, dll.) yang dapat digunakan di situs Anda.

Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=()

Menonaktifkan fitur yang tidak Anda gunakan mencegah skrip pihak ketiga dari penyalahgunaan.

Contoh penerapan header (Next.js):

// next.config.js
module.exports = {
  async headers() {
    return [{
      source: '/(.*)',
      headers: [
        { key: 'X-Content-Type-Options', value: 'nosniff' },
        { key: 'X-Frame-Options', value: 'SAMEORIGIN' },
        { key: 'Referrer-Policy', value: 'strict-origin-when-cross-origin' },
        { key: 'Permissions-Policy', value: 'camera=(), microphone=(), geolocation=()' },
        { key: 'Strict-Transport-Security', value: 'max-age=31536000; includeSubDomains; preload' },
      ]
    }]
  }
}

Penerapan header (Apache .htaccess):

Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

Penerapan header (Nginx):

add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

Quick win: Tambahkan semua 5 header di atas ke konfigurasi server Anda. Ini memakan waktu 5 menit dan segera meningkatkan postur keamanan Anda di alat pemindaian mana pun.

HSTS Preload

HTTP Strict Transport Security (HSTS) memberi tahu browser untuk selalu menggunakan HTTPS untuk domain Anda — bahkan sebelum permintaan pertama. Tanpa HSTS, kunjungan pertama ke situs Anda mungkin masih menggunakan HTTP (rentan terhadap penyadapan) sebelum pengalihan ke HTTPS terjadi.

Header HSTS:

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

Tiga arahan:

| Arahan | Arti | |--------|------| | max-age=31536000 | Ingat ini selama 1 tahun (dalam detik) | | includeSubDomains | Terapkan juga ke semua subdomain | | preload | Minta inklusi dalam daftar preload browser |

Daftar preload HSTS:

Perlindungan HSTS ultimate. Browser dilengkapi dengan daftar domain yang harus selalu menggunakan HTTPS. Mengirimkan domain Anda ke hstspreload.org berarti:

  • Pengunjung baru mendapatkan HTTPS segera (tanpa pengalihan HTTP → HTTPS)
  • Mustahil bagi penyerang untuk menurunkan koneksi
  • Permanen (sulit untuk dihapus setelah diajukan)

Persyaratan untuk preload HSTS:

  1. Sertifikat HTTPS yang valid
  2. Alihkan semua HTTP ke HTTPS (termasuk subdomain)
  3. Header HSTS dengan max-age >= 31536000
  4. Header HSTS mencakup includeSubDomains
  5. Header HSTS mencakup preload
  6. Semua subdomain harus mendukung HTTPS

Peringatan: Hanya kirim ke preload jika SEMUA subdomain Anda mendukung HTTPS. Arahan includeSubDomains berarti subdomain yang hanya HTTP akan menjadi tidak dapat diakses.

Quick win: Jika Anda sudah memiliki HTTPS di semua subdomain, tambahkan header HSTS penuh dan kirim ke hstspreload.org. Prosesnya memakan waktu beberapa minggu tetapi perlindungannya permanen.

Pemindaian Kerentanan

Pemindaian kerentanan otomatis mengidentifikasi masalah keamanan yang diketahui dalam tumpukan Anda sebelum penyerang mengeksploitasinya.

Apa yang diperiksa pemindaian kerentanan:

  • Perangkat lunak usang: WordPress, plugin, pustaka JavaScript dengan CVE yang diketahui
  • File yang terekspos: .env, .git, wp-config.php, dump database
  • Kebocoran informasi: Header versi server, mode debug, stack trace
  • Kredensial default: Halaman admin tanpa otorisasi, kata sandi default
  • Port/layanan terbuka: Layanan yang tidak perlu terekspos ke internet
  • Titik injeksi: Formulir tanpa perlindungan CSRF, input yang tidak tervalidasi

Kerentanan umum berdasarkan platform:

| Platform | Kerentanan Utama | Perbaikan | |----------|-------------------|-----------| | WordPress | Plugin usang | Pembaruan otomatis + WAF | | Shopify | Izin aplikasi pihak ketiga | Audit daftar aplikasi setiap kuartal | | Next.js | Rute API yang terekspos | Middleware otorisasi + pembatasan laju | | Situs statis | Kesalahan konfigurasi CDN | Tinjau aturan cache | | Kustom | Injeksi SQL | Kueri terparameter |

Frekuensi pemindaian:

  • Harian: Pemindaian permukaan otomatis (SSL, header, file yang terekspos)
  • Mingguan: Pemeriksaan kerentanan ketergantungan (npm audit, pemindai plugin WordPress)
  • Bulanan: Pemindaian mendalam dengan pengujian terautentikasi
  • Setelah setiap deploy: Pemeriksaan regresi

Quick win: Jalankan npm audit (Node.js) atau periksa daftar plugin CMS Anda untuk komponen yang usang. Perbaiki masalah dengan tingkat keparahan kritis/tinggi segera.

Konten Campuran

Konten campuran terjadi ketika halaman HTTPS memuat sumber daya (gambar, skrip, stylesheet, iframe) melalui HTTP. Ini sebagian memecahkan enkripsi dan memicu peringatan browser.

Jenis konten campuran:

| Jenis | Keparahan | Contoh | Perilaku Browser | |-------|-----------|--------|------------------| | Aktif | Tinggi | Skrip HTTP, iframe, CSS | Diblokir secara default | | Pasif | Sedang | Gambar HTTP, video, audio | Dimuat dengan peringatan |

Konten campuran aktif diblokir oleh browser modern — artinya skrip dan gaya Anda tidak akan dimuat. Konten campuran pasif dimuat tetapi menampilkan peringatan keamanan.

Menemukan konten campuran:

  1. Buka Chrome DevTools → Konsol
  2. Cari peringatan "Mixed Content"
  3. Sebagai alternatif, pindai dengan crawler (Screaming Frog, LANGR)

Sumber konten campuran yang umum:

  • URL http:// yang dikodekan dalam konten (postingan blog, deskripsi produk)
  • Widget pihak ketiga yang memuat sumber daya HTTP
  • Konten yang disematkan (embed YouTube lama, widget media sosial)
  • CSS background-image dengan URL HTTP
  • Font yang dimuat melalui HTTP

Memperbaiki konten campuran:

<!-- Buruk -->
<img src="http://example.com/image.jpg" />

<!-- Baik -->
<img src="https://example.com/image.jpg" />

<!-- Terbaik (protokol relatif, sesuai dengan protokol halaman) -->
<img src="//example.com/image.jpg" />

Perbaikan database (WordPress):

UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://yourdomain.com', 'https://yourdomain.com');
UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, 'http://yourdomain.com', 'https://yourdomain.com');

Quick win: Buka halaman utama Anda di Chrome, tekan F12, periksa tab Konsol untuk peringatan konten campuran. Perbaiki semua yang muncul — ini langsung terlihat oleh Google.

Risiko Skrip Pihak Ketiga

Setiap skrip eksternal yang Anda muat adalah potensi liabilitas keamanan (dan kinerja). Skrip pihak ketiga dapat:

  • Terkompromi (serangan rantai pasokan)
  • Melacak pengguna Anda tanpa izin (pelanggaran GDPR)
  • Memperlambat situs Anda (render-blocking, latensi jaringan)
  • Menghancurkan fungsionalitas (pembaruan versi, pemadaman)
  • Menyuntikkan konten yang tidak diinginkan (skrip iklan yang salah)

Audit skrip pihak ketiga Anda:

| Skrip | Perlu? | Tingkat Risiko | Alternatif | |-------|--------|----------------|------------| | Google Analytics | Sering ya | Rendah | Pelacakan sisi server | | Widget obrolan | Mungkin | Sedang | Solusi yang di-host sendiri | | Tombol berbagi sosial | Jarang | Sedang | Tautan berbagi statis | | Uji A/B | Terkadang | Tinggi | Pengujian sisi server | | Piksel retargeting | Keputusan bisnis | Tinggi | Data pihak pertama | | Font CDN | Nyaman | Rendah | Font yang di-host sendiri |

Mitigasi risiko untuk skrip pihak ketiga yang penting:

  1. Integritas Subresource (SRI): Verifikasi hash mencegah skrip yang dirusak dari dimuat
<script src="https://cdn.example.com/lib.js"
        integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxAE+sO0..."
        crossorigin="anonymous"></script>
  1. Pembatasan CSP: Hanya izinkan skrip dari domain yang diketahui
  2. iframe yang terisolasi: Isolasi widget pihak ketiga
  3. Audit rutin: Tinjau semua sumber daya eksternal setiap kuartal
  4. Pemantauan: Peringatan saat domain eksternal baru muncul di halaman Anda

Quick win: Daftar setiap tag