CROSS SITE REQUEST FORGERY
Apa Itu Cross-Site Request Forgery (CSRF)?
Cross-Site Request Forgery (CSRF) adalah salah satu jenis serangan pada aplikasi web di mana penyerang mengeksploitasi identitas pengguna untuk mengirimkan permintaan yang tidak sah ke server aplikasi. CSRF sering kali berhasil karena aplikasi web tidak memverifikasi keaslian permintaan yang datang dari pengguna yang telah diautentikasi.
Cara Kerja CSRF
- Pengguna Login: Pengguna login ke situs web A dan mendapatkan cookie sesi yang sah.
- Penyerang Membuat Permintaan Berbahaya: Penyerang membuat halaman web berbahaya atau email yang mengandung permintaan berbahaya ke situs web A.
- Pengguna Mengunjungi Halaman Berbahaya: Pengguna mengunjungi halaman berbahaya tersebut atau membuka email yang mengandung permintaan berbahaya.
- Permintaan Tidak Sah Dikirim: Karena pengguna sudah login ke situs web A, permintaan berbahaya tersebut dikirim ke server dengan menggunakan cookie sesi pengguna, sehingga permintaan tersebut tampak sah bagi server.
Sebelum Update: Script Rentan Terhadap Serangan CSRF
Berikut adalah contoh formulir transfer uang yang rentan terhadap serangan CSRF:
index.html
transfer.php
Pada contoh di atas, tidak ada perlindungan terhadap serangan CSRF. Penyerang dapat membuat formulir yang mengirimkan permintaan POST ke `transfer.php` tanpa sepengetahuan pengguna.
Hasil user
Contoh Serangan CSRF
Berikut adalah contoh script yang dapat digunakan oleh penyerang untuk mengeksploitasi kelemahan CSRF pada aplikasi:
csrf_attack.html:
Hasil attacker
Sesudah Update: Script Terlindungi dari Serangan CSRF
Untuk melindungi aplikasi web dari serangan CSRF, kita dapat menambahkan token CSRF pada formulir dan memverifikasinya di sisi server.
1. Mengubah `index.html` menjadi `index.php`:
Karena `index.html` adalah file HTML statis, kita perlu mengubahnya menjadi file PHP untuk bisa menghasilkan token CSRF dinamis.
2. Memastikan Token CSRF Diterima dan Diverifikasi di `transfer.php`:
3. Memastikan Permintaan POST Terkirim dengan Token yang Benar:
Pastikan bahwa Anda mengakses file `index.php` melalui server lokal Anda, misalnya `http://localhost/csrf/index.php`, bukan `index.html`.
4. Memastikan Tidak Ada Cache yang Mengganggu:
Bersihkan cache browser atau gunakan mode incognito untuk memastikan tidak ada cache yang mengganggu proses pengiriman token CSRF.
Dengan langkah-langkah di atas, token CSRF seharusnya dihasilkan dan diverifikasi dengan benar, sehingga menghindari kesalahan "Invalid CSRF token". Pastikan juga bahwa session bekerja dengan baik dan tidak ada konflik di server lokal Anda.
Hasil user
Hasil attacker
Dampak dari Serangan CSRF
Serangan CSRF memungkinkan penyerang untuk membuat pengguna yang sah melakukan tindakan yang tidak diinginkan tanpa sepengetahuan mereka. Dampak dari serangan ini dapat sangat merugikan, termasuk:
Transaksi Finansial Tidak Sah:
- Penyerang dapat memaksa pengguna untuk melakukan transfer uang atau pembelian online tanpa sepengetahuan pengguna.
Pengubahan Informasi Akun:
- Informasi pribadi pengguna, seperti alamat email, kata sandi, atau preferensi akun, dapat diubah oleh penyerang.
Penyalahgunaan Hak Istimewa:
- Pengguna dengan hak administratif dapat dipaksa untuk membuat perubahan kritis pada sistem atau menambahkan pengguna dengan hak istimewa tinggi.
Pencurian Identitas:
- Informasi pribadi dan kredensial pengguna dapat disalahgunakan untuk berbagai bentuk penipuan dan pencurian identitas.
Kerugian Reputasi:
- Serangan CSRF pada aplikasi web yang dikelola dapat merusak reputasi bisnis dan mengurangi kepercayaan pengguna.
Kesimpulan
Cross-Site Request Forgery (CSRF) adalah serangan yang mengeksploitasi sesi yang sah untuk mengirimkan permintaan tidak sah ke server. Untuk melindungi aplikasi web dari CSRF, teknik seperti penggunaan token CSRF, verifikasi referer/origin, penggunaan CAPTCHA, pengaturan SameSite pada cookie, dan validasi sisi server harus diimplementasikan. Dengan langkah-langkah ini, risiko serangan CSRF dapat diminimalkan.
Tidak ada komentar:
Posting Komentar