Cara Mengamankan Website dari Hacker — 10 Langkah Dasar
Saya inget banget suatu pagi di akhir tahun 2023, HP saya bergetar terus dengan notifikasi WhatsApp. Seorang teman yang punya toko online batik kirim pesan panik: “Bandi, tolong! Website saya isinya tulisan hacked by someone, semua produk hilang, customer pada komplain!” Dia udah coba login ke WordPress — nggak bisa. Password admin udah diganti. Hosting support bilang ini serangan defacement dan mereka cuma bisa restore backup kalau ada. Masalahnya, dia nggak pernah setup backup otomatis. Dua tahun data orderan customer, ratusan produk, ribuan review — hilang dalam semalam. Dari kejadian itu saya belajar: cara mengamankan website dari hacker bukanlah ilmu eksklusif buat perusahaan besar dengan budget IT milyaran. UMKM, blogger, bahkan portofolio pribadi — semua perlu fondasi keamanan dasar.
Setelah membantu teman saya memulihkan websitenya (cerita yang melibatkan ekspor database manual dari phpMyAdmin, rebuild WordPress dari nol, dan negosiasi panik dengan hosting support), saya sadar bahwa kebanyakan pemilik website Indonesia nggak sadar satu fakta penting: website kecil justru target paling empuk buat hacker. Kenapa? Karena mereka biasanya nggak punya tim keamanan, jarang update, dan pakai password standar. Bot scanner hacker jalan 24/7 di internet, nyari website vulnerable. Mereka nggak peduli websitemu besar atau kecil — yang penting bisa di-exploit. Bahkan beberapa klien saya yang websitenya cuma landing page satu halaman pun pernah kena deface.
Nah, dari pengalaman bertahun-tahun sebagai security researcher yang membantu klien memperbaiki kerentanan website, saya mau share 10 langkah dasar yang bisa langsung kamu praktikkan. Kali ini fokusnya cara mengamankan website dari hacker secara menyeluruh — mulai dari update rutin sampai security headers. Fokus saya di sini adalah WordPress — karena statistik menunjukkan lebih dari 60% website Indonesia pakai WordPress — tapi banyak prinsip ini berlaku untuk CMS atau website custom lainnya juga. Setiap langkah saya jelaskan dengan bahasa sederhana dan langsung actionable, jadi kamu nggak perlu jadi programmer untuk bisa melindungi website sendiri.
Disclaimer: Semua yang saya tulis di sini murni untuk edukasi dan perlindungan. Tujuannya membantu kamu mengamankan website sendiri dari ancaman. Jangan gunakan pengetahuan ini untuk merugikan orang lain.
1. Selalu Update Core, Plugin, dan Theme
Ini kedengeran sepele. Tapi percayalah, dari puluhan website WordPress yang pernah saya bantu pulihkan dari hack, hampir 80% kena karena pemiliknya menunda-nunda update. Hacker itu cepat banget. Begitu vulnerability diumumkan di plugin atau theme tertentu (apalagi yang populer), dalam hitungan jam bot scanner udah mulai nyari target.
Saya pernah audit website travel agent yang masih pakai plugin form builder versi 3 tahun lalu. Satu vulnerability critical di plugin itu udah dipublikasikan sejak 2021 dan ada patch-nya. Tapi karena nggak di-update, website itu jadi korban SQL injection yang nge-dump seluruh database customer — termasuk data paspor dan kartu kredit. Sakit banget ngeliatnya. Padahal solusinya sesimpel klik tombol “Update” di dashboard WordPress.
Cara Praktis Update yang Aman
- Enable auto-update untuk WordPress core minor releases. Sejak versi 5.5, WordPress udah support auto-update untuk plugin dan theme. Aktifkan fitur ini di Dashboard → Plugins, klik “Enable auto-updates” di setiap plugin.
- Cek halaman Dashboard → Updates setiap minggu. Jangan cuma login buat posting doang. Jadikan kebiasaan.
- Sebelum update besar, backup dulu. Pakai plugin backup seperti UpdraftPlus atau fitur backup dari hosting kamu. Kalau update gagal, kamu bisa restore.
- Pertimbangkan managed WordPress hosting (seperti Niagahoster WordPress, Hostinger WordPress) yang otomatis update core untukmu. Mereka biasanya testing dulu sebelum push update, jadi lebih aman.
- Hapus plugin yang udah diabaikan developernya. Cek halaman plugin — kalau ada yang statusnya “This plugin hasn’t been tested with the latest 3 major releases of WordPress”, pertimbangkan buat cari alternatif.
2. Gunakan Password yang Kuat dan Two-Factor Authentication
Jujur, ini yang paling sering bikin saya geleng-geleng kepala. Masih banyak banget website admin yang pakai password “admin123”, “password”, atau bahkan nama tokonya sendiri. Di satu audit yang saya lakukan buat portal berita lokal, saya temukan empat akun admin dengan password “batik123”. Padahal nama portalnya tentang batik, jadi hacker bisa nebak dalam hitungan detik.
Cara Bikin Password yang Benar
- Minimal 16 karakter, campuran huruf besar, huruf kecil, angka, dan simbol.
- Jangan pakai kata yang ada di kamus atau yang berhubungan dengan brand-mu.
- Gunakan password manager seperti Bitwarden (gratis dan open-source) atau 1Password untuk generate dan nyimpen password random. Jangan simpan password di notes HP atau sticky notes di monitor.
- Jangan pernah pakai password yang sama untuk dua layanan berbeda. Kalau satu bocor, semuanya bocor.
Two-Factor Authentication (2FA) Itu Wajib
2FA artinya selain password, kamu butuh kode tambahan yang cuma kamu yang punya — biasanya dari aplikasi authenticator di HP. Jadi meskipun password-mu bocor, hacker tetap nggak bisa masuk.
- Pakai plugin Wordfence (versi gratis udah include 2FA). Buka Wordfence → Login Security, scan QR code dengan Google Authenticator, simpan recovery code.
- Atau pakai plugin Two-Factor — plugin resmi dari WordPress core team, lebih ringan.
- Enable 2FA untuk semua user yang punya akses admin, editor, atau author. Bukan cuma admin. Kalau akun editor kena hack, attacker bisa menyisipkan malicious script di postingan.
3. Install SSL Certificate dan Paksa HTTPS
Dulu saya kira SSL cuma buat website yang transaksi doang. Ternyata salah besar. Sejak Google Chrome mulai ngasih label “Not Secure” di website HTTP, reputasi websitemu langsung turun di mata pengunjung. Belum lagi data login dan form submission yang dikirim tanpa enkripsi bisa dicegat di jaringan publik (coffee shop WiFi, misalnya).
Yang Harus Kamu Lakukan
- Aktifkan SSL gratis dari Let’s Encrypt — hampir semua hosting Indonesia sekarang support ini dengan satu klik di cPanel. Cari menu “SSL/TLS Status” atau “Let’s Encrypt SSL”.
- Atau pakai Cloudflare yang nyediain SSL gratis. Tinggal ubah nameserver, setting SSL mode ke “Full” atau “Full (Strict)”, dan aktifkan “Always Use HTTPS”.
- Force HTTPS dengan plugin Really Simple SSL (WordPress) atau tambahkan rules redirect di .htaccess.
- Cek mixed content setelah install SSL — kadang gambar atau script masih ke-load lewat HTTP, bikin gembok hijau nggak muncul. Buka Developer Tools (F12) di Chrome, tab Console, dan lihat warning mixed content.
4. Backup Rutin Itu Asuransi Terbaikmu
Percaya deh, nggak ada sistem yang 100% aman. Bahkan perusahaan raksasa kayak Facebook dan Google pernah kena breach. Bedanya, mereka punya backup berlapis. Kamu juga harus begitu.
Saya sendiri pernah ngalamin server lab yang kena ransomware karena saya lupa nge-patch sebuah service. Untungnya backup harian saya jalan, jadi recovery cuma butuh 2 jam. Tanpa backup? Data research bertahun-tahun bisa lenyap seketika. Sejak itu saya pantang skip backup.
Strategi Backup 3-2-1
Aturan emas backup: 3 salinan data, 2 tipe media berbeda, 1 di luar lokasi.
- Backup otomatis harian ke cloud storage (Google Drive, Dropbox) pakai plugin UpdraftPlus. Jadwalkan di tengah malam saat traffic rendah.
- Backup mingguan manual yang kamu download ke komputer lokal. Ini safety net tambahan kalau cloud storage-mu kena masalah.
- Jangan simpan backup di server yang sama — kalau server kena, backup-mu juga kena. Banyak hosting nyediain backup internal, tapi tetap harus punya backup eksternal.
- Tes restore backup-mu secara berkala — backup yang nggak bisa di-restore sama aja kayak nggak punya backup. Saya selalu restore ke staging environment setiap bulan buat verifikasi.
5. Gunakan Web Application Firewall (WAF)
Bayangin WAF sebagai satpam di gerbang depan website kamu. Dia periksa setiap request yang masuk dan blokir yang mencurigakan — sebelum request itu sampai ke aplikasi websitemu. Saya punya pengalaman di mana Cloudflare WAF ngeblok 47.000 request berbahaya dalam satu malam ke website UMKM klien. Tanpa WAF, website itu mungkin udah tumbang kena brute force attack dan SQL injection attempt.
Pilihan WAF untuk Pemula
- Cloudflare Free Plan — tinggal ubah nameserver, langsung dapat basic WAF protection. Aktifkan “Under Attack Mode” saat diserang. Fitur ini menampilkan JavaScript challenge yang bisa ngeblokir bot otomatis tanpa ganggu pengunjung manusia.
- Sucuri — lebih mahal tapi termasuk malware removal dan professional support. Cocok untuk website bisnis yang nggak bisa tolerir downtime.
- Wordfence — WAF built-in untuk WordPress yang jalan di level aplikasi, bekerja sebagai plugin. Efektif untuk mendeteksi ancaman dalam konteks WordPress.
6. Hapus Plugin dan Theme yang Nggak Dipakai
Setiap kali saya audit website klien, saya selalu temukan 5-15 plugin yang statusnya “Deactivated” tapi nggak dihapus. Ini bahaya! Plugin yang nggak di-update tapi tetap ter-install bisa jadi pintu masuk hacker. Vulnerability di plugin yang nggak aktif pun masih bisa dieksploitasi dalam beberapa kasus — terutama kalau file-nya masih accessible langsung lewat web.
Aturan Sederhana
- Uninstall, jangan cuma deactivate. Plugin yang nggak kamu pakai harus benar-benar dihapus dari server.
- Pertahankan maksimal 15-20 plugin aktif. Lebih dari itu, makin besar attack surface website-mu. Setiap plugin adalah potensi celah.
- Hapus theme default yang nggak dipakai — Twenty Twenty, Twenty One, Twenty Two, dll. Kalau nggak dihapus dan nggak di-update, mereka jadi celah keamanan karena attacker tahu nama folder dan struktur filenya.
- Evaluasi plugin setiap bulan. Tanya ke diri sendiri: “Saya masih butuh plugin ini nggak ya? Ada alternatif yang lebih sederhana?”
7. Validasi Semua Input — Jangan Percaya User
Ini prinsip fundamental keamanan web yang nggak akan pernah basi: semua input dari user itu berbahaya sampai terbukti aman. Mau itu form kontak, kolom komentar, search box, file upload, atau parameter URL — semuanya harus divalidasi dan di-sanitize sebelum diproses.
Saya pernah nemu website membership e-learning yang upload avatar-nya nggak divalidasi. User bisa upload file PHP dengan ekstensi .php.jpg, dan server menjalankannya sebagai PHP. Akibatnya? Attacker dapat web shell dan akses penuh ke server. Semua berawal dari satu kolom upload avatar yang nggak divalidasi dengan benar. Dan ini bukan server pribadi — ini server production dengan 5000+ user.
Jenis Validasi yang Perlu Diterapkan
- Whitelist, bukan blacklist. Tentukan format yang DIPERBOLEHKAN (misalnya: hanya .jpg, .png, .pdf), jangan coba nebak format yang BERBAHAYA.
- Escape output. Kalau kamu nampilin data user di halaman web, selalu escape HTML entities biar script nggak jalan. Di PHP, gunakan
htmlspecialchars(). Di JavaScript, gunakantextContentbukaninnerHTML. - Batasi ukuran upload. Jangan biarkan user upload file raksasa yang bisa bikin server kehabisan resource.
- Validasi di server-side, bukan cuma client-side. Validasi JavaScript gampang di-bypass — attacker bisa matikan JavaScript atau kirim request langsung lewat curl.
8. Atur File Permission dengan Benar
File permission adalah sistem izin di server yang menentukan siapa yang bisa baca, tulis, dan eksekusi file. Setting yang salah bisa bikin file konfigurasi (termasuk password database) bisa dibaca oleh siapa pun — atau lebih parah, attacker bisa menulis file baru ke direktori websitemu.
Permission yang Direkomendasikan
- Folder: 755 (rwxr-xr-x) — pemilik bisa baca, tulis, eksekusi; orang lain cuma bisa baca dan eksekusi.
- File: 644 (rw-r–r–) — pemilik bisa baca dan tulis; orang lain cuma bisa baca.
- wp-config.php: 600 (rw-------) atau 440 (r–r-----) — ini file paling sensitif, cuma pemilik atau group web server yang boleh baca.
- Pastikan direktori upload (wp-content/uploads) nggak bisa mengeksekusi PHP. Ini bisa diatur lewat .htaccess dengan menambahkan:
<Files *.php>
deny from all
</Files>
Sebelum mengubah permission, catat permission awal dulu biar bisa balik kalau ada masalah.
9. Pantau Log dan Monitoring Aktivitas
Kamu nggak bisa mengamankan sesuatu yang nggak kamu pantau. Monitoring log membantu kamu tahu kalau ada aktivitas mencurigakan — misalnya puluhan percobaan login gagal, request ke file aneh, atau perubahan mendadak pada file inti WordPress.
Tools Monitoring untuk Pemilik Website
- Wordfence — ngirim email alert real-time kalau ada perubahan file, login admin, atau traffic mencurigakan. Bisa dikustom supaya nggak spammy — atur alert cuma untuk event critical.
- WP Activity Log — catat semua aktivitas di dashboard WordPress (siapa yang login, edit post, install plugin, ganti setting). Penting buat audit trail kalau ada insiden.
- Google Search Console — pantau security issues yang terdeteksi Google di websitemu, termasuk malware dan phishing detection.
- Server logs via cPanel — cek raw access logs dan error logs secara berkala untuk request mencurigakan. Cari pola seperti request ke file yang nggak exist atau parameter URL yang aneh.
10. Pasang Security Headers
Security headers adalah instruksi kecil yang dikirim server ke browser, ngasih tahu bagaimana browser harus bersikap terhadap konten websitemu. Ini nggak bikin websitemu kebal, tapi mempersulit banyak jenis serangan umum seperti clickjacking, XSS, dan MIME sniffing.
Headers yang Wajib Dipasang
- Content-Security-Policy (CSP): Bikin whitelist dari mana script, style, dan resource boleh dimuat. Ini pertahanan terkuat melawan XSS. Contoh:
Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted-cdn.com. - X-Frame-Options: Cegah website-mu di-embed di iframe (mencegah clickjacking). Paling aman:
X-Frame-Options: DENYatauSAMEORIGIN. - X-Content-Type-Options: Cegah browser “menebak” MIME type (mencegah MIME sniffing attack). Set ke
nosniff. - Strict-Transport-Security (HSTS): Paksa browser selalu akses lewat HTTPS. Contoh:
max-age=31536000; includeSubDomains. - Referrer-Policy: Kontrol informasi apa yang dikirim saat user klik link dari website-mu. Opsi aman:
strict-origin-when-cross-origin.
Untuk WordPress, kamu bisa pasang header ini via .htaccess (untuk Apache) atau pakai plugin seperti HTTP Headers. Tool gratis securityheaders.com bisa scan dan ngasih grade A+ sampai F. Target minimal: grade A.
Cara Memeriksa Security Headers Websitemu
Buka securityheaders.com, masukin URL websitemu, dan lihat grade-nya. Jangan kaget kalau pertama kali hasilnya F — sebagian besar website Indonesia masih kosong security headers-nya. Fokus naikin grade sedikit demi sedikit. Mulai dari X-Frame-Options dan X-Content-Type-Options yang paling gampang dipasang.
Kenapa Website Kecil Juga Perlu Diamankan?
Saya sering denger alasan: “Ah websitenya kecil kok, siapa yang mau hack?” Ini mindset berbahaya yang harus diubah. Bot scanner hacker itu otomatis — mereka nggak pilih-pilih target. Mereka scan ribuan website per jam buat nyari vulnerability umum seperti outdated plugin atau default credential. Website kecil sering kali lebih mudah di-exploit karena di-maintain secara sporadis dan nggak pernah diaudit.
Selain itu, website yang sudah di-hack sering dijadikan bagian dari botnet atau dipakai buat hosting phishing page. Jadi meskipun nggak ada data penting di websitemu, server-mu bisa disalahgunakan untuk menyerang orang lain. Hosting kamu bisa suspend akun, IP server bisa kena blacklist, dan reputasi domain bisa hancur permanen.
Kesalahan Umum yang Sering Saya Temukan
Selama bertahun-tahun audit, ada pola kesalahan yang muncul terus-menerus. Supaya kamu nggak mengulanginya, ini daftar singkatnya:
- Mengandalkan hosting murah untuk keamanan. Hosting Rp 10.000/bulan mungkin cukup untuk performance, tapi jangan harap mereka punya tim keamanan 24/7.
- Instal plugin nulled / bajakan. Saya udah lihat terlalu banyak website hancur karena ini. Plugin nulled HAMPIR SELALU mengandung backdoor.
- Mengabaikan notifikasi update. “Nanti aja update-nya” adalah kalimat yang paling sering saya dengar sebelum website kena hack.
- Satu password untuk semua. Kalau satu akun bocor — entah itu email, hosting, atau media sosial — attacker langsung coba password yang sama di semua layananmu.
- Nggak pernah cek apakah backup bisa direstore. Backup yang corrupt atau nggak lengkap sama aja bohong.
Penutup
Keamanan website itu bukan destinasi, tapi perjalanan. Nggak ada yang namanya 100% aman. Tapi dengan menerapkan 10 langkah di atas, kamu udah mengurangi risiko secara signifikan — dari target empuk jadi target yang bikin hacker mikir dua kali. Mulai dari yang paling gampang dulu: ganti password ke yang kuat, aktifkan auto-update, dan setup backup otomatis. Ketiga langkah sederhana itu aja udah bikin websitemu 10x lebih aman dari rata-rata website yang kena hack.
Inget, tujuan kita di sini adalah melindungi aset digital yang udah kamu bangun dengan susah payah. Website itu ibarat toko fisik — kamu nggak akan biarin tokonya nggak dikunci kan? Perlakukan websitemu dengan standar perlindungan yang sama. Keamanan adalah investasi, bukan biaya.
