CROSS SITE REQUEST FORGERY
CROSS SITE REQUEST FORGERY
DEFINISI
•Cross-Site Request Forgery (CSRF) adalah jenis serangan yang memaksa pengguna yang telah diautentikasi ke suatu situs web untuk melakukan tindakan yang tidak diinginkan pada situs tersebut.
• Penyerang menggunakan kredensial pengguna yang sah untuk melakukan aksi berbahaya tanpa sepengetahuan pengguna.
MEKANISME SERANGAN CSRF
• Penyerang membuat permintaan berbahaya:
• Penyerang membuat URL atau formulir yang mengandung permintaan berbahaya.
• Mengelabui korban:
• Penyerang mengelabui korban untuk mengklik URL atau mengisi formulir di situs lain.
MEKANISME SERANGAN CSRF
• Permintaan dikirim dengan kredensial korban:
• Permintaan berbahaya dikirim ke situs yang ditargetkan dengan kredensial korban yang sah.
• Situs target memproses permintaan:
• Situs target memproses permintaan karena berasal dari pengguna yang sah.
STUDI KASUS: TRANSFER UANG
• Pak Budi masuk ke situs perbankan.
• Penyerang mengirimkan email ke Pak Budi dengan link berbahaya: http://bank.com/transfer?amount=1000&to=attacker_account
• Pak Budi mengklik link tersebut.
• Transfer uang dilakukan tanpa sepengetahuan Pak Budi.
DEMO SERANGAN CSRF
• Buat sebuah folder di C:\xampp\htdocs\ bernama csrf.
•Di dalam folder csrf, buat file bernama index.html dengan isi sebagai berikut :
DEMO SERANGAN CSRF
Bentuk mitigasi yang bisa dilakuakn
Untuk melindungi form ini dari serangan Cross-Site Request Forgery (CSRF), bisa menambahkan token CSRF pada form dan memvalidasi token tersebut di server saat form dikirim. Berikut adalah contoh bagaimana cara melakukannya:
Generate dan simpan token CSRF di server: Modifikasi file
transfer.phpuntuk membuat token CSRF dan menyimpannya di sesi.Tambahkan token CSRF ke dalam form: Sisipkan token CSRF yang dihasilkan ke dalam form sebagai input hidden.
Validasi token CSRF di server: Pastikan token yang dikirim bersama form valid sebelum memproses permintaan.
Berikut adalah contoh implementasi:
modifikasi pada file index.html
Hasil yang diperoleh
Dampak dari CSRF
- Transfer Dana Tidak Sah: Seperti contoh di atas, penyerang bisa mengalihkan dana ke akun mereka.
- Mengubah Pengaturan Akun: Penyerang bisa mengubah alamat email atau kata sandi pengguna.
- Mengirim Pesan Berbahaya: Penyerang bisa mengirim pesan atau posting konten yang tidak diinginkan atas nama pengguna.
- Eksekusi Perintah Berbahaya: Penyerang bisa menjalankan perintah berbahaya yang merusak data atau sistem.
Cara Mencegah CSRF
Token CSRF
Token CSRF adalah nilai acak yang unik yang dikirimkan bersama dengan setiap permintaan yang membutuhkan otorisasi. Token ini biasanya disisipkan dalam formulir atau sebagai header HTTP. Server memverifikasi token ini sebelum memproses permintaan.
Implementasi Token CSRF:
- Membuat Token: Saat sesi pengguna dimulai, server membuat token CSRF yang unik.
- Menyisipkan Token dalam Formulir: Token tersebut disisipkan dalam setiap formulir HTML sebagai input tersembunyi.
- Memverifikasi Token: Saat permintaan diterima, server memverifikasi apakah token yang diterima cocok dengan token yang disimpan di server.
Verifikasi Referer dan Origin
- Referer Header: Server dapat memeriksa header Referer untuk memastikan permintaan datang dari domain yang sah.
- Origin Header: Header Origin lebih sulit untuk dimanipulasi dan dapat digunakan untuk memverifikasi asal permintaan.
Penggunaan CAPTCHA
Menggunakan CAPTCHA pada formulir kritis dapat mencegah serangan otomatis karena CAPTCHA memerlukan interaksi manusia.
SameSite Cookie Attribute
Pengaturan atribut SameSite pada cookie dapat membatasi pengiriman cookie hanya untuk permintaan dari domain yang sama.
Penggunaan Header HTTP
Header seperti X-Requested-With: XMLHttpRequest dapat digunakan untuk memverifikasi bahwa permintaan datang dari sumber yang sah, walaupun ini bukan solusi yang paling aman karena header ini bisa dimanipulasi.
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.
Komentar
Posting Komentar