---
title: "Apa Itu Session Hijacking dan Cara Mencegahnya"
description: "Session hijacking membuat penyerang masuk ke akun tanpa password dan bahkan melewati 2FA. Kenali cara kerjanya dan pengaturan yang mencegahnya di website."
url: "https://nivelva.com/insight/apa-itu-session-hijacking-cara-mencegahnya"
category: "Keamanan/Cyber Security"
tags: ["session hijacking","cookie","keamanan website","https","php"]
author: "Theresia Candiawan"
published: "2026-11-07T02:05:00+07:00"
updated: "2026-11-07T02:05:00+07:00"
language: "id"
publisher: "Nivelva (https://nivelva.com)"
---

# Apa Itu Session Hijacking dan Cara Mencegahnya

> **Jawaban singkat:** Session hijacking adalah pencurian tanda sesi login (biasanya cookie) sehingga penyerang bisa memakai akun korban tanpa password. Cegah dengan HTTPS penuh, cookie HttpOnly, Secure, dan SameSite, ID sesi baru setiap login, batas waktu sesi, serta perangkat pengguna yang bebas malware.

Session hijacking adalah serangan ketika seseorang mencuri tanda sesi login milik orang lain, lalu memakainya untuk masuk ke akun tanpa perlu tahu password.

Ini penting karena banyak pemilik website merasa aman setelah memasang password kuat dan 2FA. Padahal keduanya hanya diperiksa saat login. Setelah itu, website mengenali pengguna dari satu potong data kecil di browser. Kalau data itu berpindah tangan, penyerang langsung berada di dalam, seolah-olah dia adalah kamu.

## Bagaimana sesi login bekerja?

HTTP pada dasarnya tidak mengingat siapa yang sedang berkunjung. Supaya kamu tidak diminta login di setiap halaman, server membuat **ID sesi** acak setelah login berhasil, lalu menitipkannya ke browser dalam bentuk cookie. Setiap kali browser meminta halaman berikutnya, cookie itu ikut terkirim dan server berkata, "Oh, ini pengguna yang tadi."

Artinya, selama sesi masih berlaku, cookie tersebut setara dengan kunci akun. Server tidak menanyakan password lagi, dan tidak menanyakan kode 2FA lagi.

## Dari mana penyerang mendapatkan cookie sesi?

Ada beberapa jalur yang paling umum:

- **Malware pencuri data di perangkat korban.** Infostealer menyalin cookie yang tersimpan di browser, lalu mengirimnya ke penyerang. Karena yang dicuri adalah sesi yang sudah lolos 2FA, penyerang tidak perlu kode OTP. Jenis malware ini dibahas di [infostealer pencuri password browser](https://nivelva.com/insight/infostealer-malware-pencuri-password-browser).
- **Celah XSS di website.** Bila penyerang bisa menyisipkan JavaScript ke halaman, skrip itu bisa membaca cookie yang tidak dilindungi lalu mengirimnya keluar. Contoh kasusnya ada di [apa itu XSS di formulir website](https://nivelva.com/insight/apa-itu-xss-contoh-serangannya-formulir-website).
- **Koneksi tanpa enkripsi.** Di jaringan yang bisa disadap, seperti Wi-Fi publik tanpa pengaman, cookie yang dikirim lewat HTTP biasa bisa terbaca.
- **Session fixation.** Penyerang "menitipkan" ID sesi yang sudah ia ketahui ke korban, misalnya lewat tautan. Bila aplikasi tidak membuat ID baru saat korban login, penyerang ikut memakai sesi yang sama.
- **ID sesi yang mudah ditebak.** Aplikasi buatan sendiri yang membuat ID dari angka urut atau waktu bisa ditebak dengan mencoba-coba.

## Pengaturan yang mencegahnya di sisi website

Kebanyakan pencegahan session hijacking adalah soal konfigurasi, bukan fitur mahal. Ringkasannya:

| Jalur serangan | Pencegahan utama |
|:--|:--|
| Penyadapan koneksi | HTTPS di semua halaman, HSTS, atribut cookie `Secure` |
| Pencurian lewat XSS | Atribut `HttpOnly`, perbaikan celah XSS, Content Security Policy |
| Session fixation | Buat ID sesi baru setiap kali login berhasil |
| ID mudah ditebak | Pakai pengelola sesi bawaan framework, jangan buat ID sendiri |
| Cookie dipakai dari situs lain | Atribut `SameSite=Lax` atau `Strict` |
| Sesi curian dipakai lama | Batas waktu tidak aktif, logout yang menghapus sesi di server |

### Atribut cookie

Tiga atribut ini sebaiknya selalu ada di cookie sesi. `Secure` membuat cookie hanya dikirim lewat HTTPS. `HttpOnly` membuat cookie tidak bisa dibaca JavaScript, sehingga skrip XSS tidak bisa mengambilnya langsung. `SameSite` membatasi kapan cookie ikut terkirim dari situs lain, dan sekaligus membantu menahan serangan [CSRF](https://nivelva.com/insight/apa-itu-csrf-formulir-website-butuh-token).

Untuk aplikasi PHP yang memakai sesi bawaan, pengaturannya bisa di `php.ini` atau `.user.ini`:

```
session.cookie_secure = 1
session.cookie_httponly = 1
session.cookie_samesite = "Lax"
session.use_strict_mode = 1
session.use_only_cookies = 1
```

`use_strict_mode` membuat PHP menolak ID sesi yang tidak pernah dibuat server, sehingga session fixation lebih sulit dilakukan.

### Ganti ID sesi saat login

Setelah username dan password (dan 2FA) diverifikasi, buat ID sesi baru. Di PHP caranya `session_regenerate_id(true);` tepat setelah login berhasil. Lakukan juga saat hak akses berubah, misalnya pengguna naik menjadi admin. Framework populer seperti Laravel dan Django sudah melakukannya secara bawaan, jadi pastikan fitur itu tidak dimatikan.

### Batasi umur sesi

Sesi admin yang berlaku berminggu-minggu memberi waktu panjang bagi cookie curian. Atur batas waktu tidak aktif yang wajar untuk halaman admin, pastikan tombol logout benar-benar menghapus sesi di server, dan minta login ulang untuk tindakan sensitif seperti mengganti email, password, atau rekening pembayaran.

> **Untuk WordPress:**
>
> WordPress memakai cookie login sendiri yang ditandatangani dengan kunci dan salt di `wp-config.php`. Mengganti kunci dan salt itu akan mengeluarkan semua sesi yang masih aktif, termasuk sesi milik penyerang. Ini langkah wajib bila kamu curiga ada akun admin yang dibajak.

## Bagaimana dengan sisi pengguna?

Pengaturan server tidak bisa melindungi sesi yang dicuri langsung dari laptop yang terinfeksi. Karena itu, kebiasaan pengguna sama pentingnya:

- Jangan login ke akun admin dari komputer umum atau perangkat orang lain.
- Pasang ekstensi browser seperlunya, dan hanya dari sumber resmi.
- Hindari menyimpan sesi admin terus-menerus. Logout setelah selesai mengelola situs.
- Periksa daftar sesi aktif di akun penting (email, panel hosting, media sosial) dan keluarkan perangkat yang tidak dikenal.
- Bila perangkat dicurigai terinfeksi, bersihkan dulu, baru ganti password dan cabut semua sesi dari perangkat lain yang bersih.

Prinsip autentikasi yang lebih luas, termasuk passkey dan 2FA, ada di [panduan autentikasi modern](https://nivelva.com/insight/panduan-autentikasi-modern-bisnis).

## Tanda sesi mungkin dibajak

Perhatikan aktivitas yang tidak kamu lakukan: pengaturan akun berubah, ada email notifikasi login dari lokasi asing, artikel atau produk baru muncul, atau pengguna admin bertambah. Pada website, log yang menunjukkan satu ID sesi dipakai dari dua alamat IP dan browser yang sangat berbeda dalam waktu berdekatan juga patut diperiksa. Langkah pertama selalu sama: cabut semua sesi, ganti kredensial dari perangkat bersih, lalu cari cara cookie itu bisa bocor.

## Pertanyaan yang sering diajukan

### Apakah 2FA melindungi dari session hijacking?

Tidak sepenuhnya. 2FA melindungi proses login, sedangkan session hijacking memakai sesi yang sudah lolos login. Yang membantu adalah sesi berumur pendek, login ulang untuk tindakan sensitif, dan perangkat yang bersih.

### Apakah HTTPS sudah cukup?

HTTPS menutup jalur penyadapan, tapi tidak mencegah pencurian lewat XSS atau malware di perangkat. Tetap perlu atribut cookie yang benar dan celah aplikasi yang ditutup.

### Apakah mengikat sesi ke alamat IP efektif?

Bisa menambah hambatan, tapi sering mengganggu pengguna yang IP-nya berganti, misalnya saat berpindah dari Wi-Fi ke data seluler. Banyak aplikasi memilih memberi peringatan atau meminta login ulang daripada langsung memutus sesi.

## Sumber

- <https://cheatsheetseries.owasp.org/cheatsheets/Session_Management_Cheat_Sheet.html>
- <https://www.php.net/manual/en/session.security.ini.php>
- <https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies>

---

Diterbitkan oleh Nivelva Insight (https://nivelva.com/insight/). Artikel ini: https://nivelva.com/insight/apa-itu-session-hijacking-cara-mencegahnya
Kontak Nivelva: WhatsApp https://wa.me/6285111245007, email hello@nivelva.com
