Jelaskan apa itu CSRF?
Cross-Site Request Forgery (CSRF) adalah serangan keamanan web di mana penyerang memanfaatkan identitas atau sesi yang sah dari pengguna untuk melakukan tindakan yang tidak diinginkan di situs web yang rentan.
Dalam serangan CSRF, penyerang mengirim permintaan yang terlihat sah kepada situs web yang rentan dari situs web yang berbeda yang dikunjungi oleh korban. Permintaan tersebut dapat berupa permintaan untuk mengubah kata sandi, mengirim pesan, melakukan transaksi keuangan, dan tindakan lainnya yang dilakukan oleh pengguna yang sah.
Contohnya, bayangkan korban sedang masuk ke situs web bank dan memiliki sesi yang valid. Sementara itu, penyerang yang telah mempersiapkan situs web palsu mengirimkan tautan phishing ke korban melalui email atau pesan instan.
Jika korban mengklik tautan tersebut, permintaan palsu akan dikirim dari situs web palsu ke situs web bank yang rentan dengan menggunakan sesi yang sah dari korban, dan penyerang dapat melakukan tindakan seperti transfer uang, mengubah kata sandi, dan sebagainya.
Untuk mencegah serangan CSRF, situs web dapat menggunakan teknik seperti penggunaan token CSRF yang berbeda untuk setiap permintaan, memeriksa referer header pada permintaan, dan menggunakan mekanisme otentikasi yang kuat.
Selain itu, pengguna dapat mengambil tindakan seperti tidak mengklik tautan yang mencurigakan dan selalu keluar dari situs web yang penting setelah digunakan.
Jenis-jenis Serangan CSRF
Berikut adalah beberapa jenis serangan CSRF (Cross-Site Request Forgery):
- GET-Based CSRF: Jenis serangan ini memanfaatkan permintaan HTTP GET. Penyerang menyiapkan tautan dengan parameter yang disertakan yang akan dikirim ke situs web korban. Ketika korban mengklik tautan, permintaan palsu akan dikirim ke situs web korban dengan menggunakan sesi yang sah dari korban.
- POST-Based CSRF: Jenis serangan ini memanfaatkan permintaan HTTP POST. Penyerang menyembunyikan permintaan POST yang akan dikirim ke situs web korban di dalam sebuah form yang tersembunyi pada situs web penyerang. Ketika korban mengunjungi situs web penyerang, form tersebut secara otomatis di-submit dan permintaan palsu dikirim ke situs web korban.
- Cookie-Based CSRF: Jenis serangan ini memanfaatkan cookie yang disimpan pada browser pengguna. Penyerang menyiapkan tautan phishing yang mengarahkan pengguna ke situs web penyerang. Setelah pengguna mengunjungi situs web penyerang, cookie yang disimpan pada browser akan digunakan untuk melakukan permintaan palsu ke situs web yang rentan.
- Referer-Based CSRF: Jenis serangan ini memanfaatkan header referer dalam permintaan HTTP. Penyerang menyiapkan tautan phishing yang mengarahkan pengguna ke situs web penyerang. Ketika pengguna mengklik tautan, permintaan palsu akan dikirim ke situs web korban dengan header referer yang dimanipulasi.
Untuk mencegah serangan CSRF, situs web dapat menggunakan teknik seperti penggunaan token CSRF yang berbeda untuk setiap permintaan, memeriksa referer header pada permintaan, dan menggunakan mekanisme otentikasi yang kuat.
Selain itu, pengguna dapat mengambil tindakan seperti tidak mengklik tautan yang mencurigakan dan selalu keluar dari situs web yang penting setelah digunakan.
Cara Kerja CSRF
Cara kerja dari CSRF (Cross-Site Request Forgery) adalah sebagai berikut:
- Penyerang mempersiapkan serangan: Penyerang membuat situs web palsu atau mengirimkan tautan phishing kepada korban yang mengarahkan mereka ke situs web penyerang. Di situs web penyerang, penyerang menyiapkan permintaan HTTP palsu yang akan dikirim ke situs web yang rentan.
- Korban mengunjungi situs web penyerang: Korban mengunjungi situs web penyerang dengan mengklik tautan phishing atau dengan cara lain yang memungkinkan mereka untuk mengunjungi situs web penyerang.
- Permintaan HTTP palsu dikirim: Setelah korban mengunjungi situs web penyerang, permintaan HTTP palsu secara otomatis dikirim ke situs web yang rentan. Permintaan HTTP palsu ini menggunakan sesi yang sah dari korban yang telah disimpan di browser mereka, sehingga terlihat seperti permintaan yang sah dari pengguna yang sah.
- Aksi yang tidak diinginkan dilakukan: Setelah situs web yang rentan menerima permintaan HTTP palsu, situs tersebut akan melakukan tindakan yang diminta oleh penyerang. Tindakan ini dapat berupa mengubah informasi pengguna, melakukan transaksi keuangan, atau tindakan lain yang diinginkan oleh penyerang.
Cara kerja CSRF memanfaatkan fakta bahwa browser akan secara otomatis mengirim cookie dan informasi otentikasi lainnya ke situs web yang rentan saat permintaan HTTP dikirim.
Oleh karena itu, penyerang dapat memanfaatkan informasi otentikasi tersebut untuk memanipulasi situs web yang rentan dan melakukan tindakan yang tidak diinginkan.
Untuk mencegah serangan CSRF, situs web dapat menggunakan teknik-teknik seperti penggunaan token CSRF yang berbeda untuk setiap permintaan dan memeriksa referer header pada permintaan.
Cara Mencegah Serangan CSRF
Berikut ini adalah beberapa cara mencegah serangan CSRF:
1. Menggunakan token CSRF
Situs web dapat menghasilkan token CSRF unik yang harus dimasukkan oleh pengguna dalam setiap permintaan yang dikirim ke server. Token ini dapat berupa nilai yang dihasilkan secara acak atau nilai hash dari data tertentu pada permintaan.
Setiap token hanya dapat digunakan satu kali dan harus diperbarui setelah setiap permintaan.
2. Memeriksa referer header
Server dapat memeriksa header referer dalam permintaan untuk memastikan bahwa permintaan tersebut berasal dari situs web yang sah. Namun, ini bukan metode yang sepenuhnya dapat diandalkan karena beberapa browser dapat menonaktifkan header referer.
3. Menggunakan mekanisme otentikasi yang kuat
Situs web dapat menggunakan mekanisme otentikasi yang lebih kuat, seperti autentikasi dua faktor atau autentikasi biometrik, untuk memperkuat keamanan situs web.
4. Menambahkan konfirmasi aksi
Situs web dapat menambahkan konfirmasi aksi, seperti mengirim email atau mengirimkan kode verifikasi, sebelum melakukan tindakan yang signifikan, seperti mengubah informasi pengguna atau melakukan transaksi keuangan.
5. Menggunakan cookie dengan flag HttpOnly
Situs web dapat mengatur cookie dengan flag HttpOnly, yang mencegah JavaScript untuk mengakses atau memanipulasi cookie melalui kode JavaScript pada halaman web.
6. Menambahkan captcha atau reCaptcha
Situs web dapat menambahkan captcha atau reCaptcha pada form atau halaman yang sensitif, sehingga hanya pengguna manusia yang dapat mengirimkan permintaan.
Dengan mengambil tindakan pencegahan ini, situs web dapat mengurangi risiko serangan CSRF dan meningkatkan keamanan situs web.
Namun, pengguna juga dapat membantu mencegah serangan CSRF dengan selalu logout dari situs web penting setelah digunakan dan menghindari mengklik tautan phishing atau tautan yang mencurigakan.
Kesimpulan
Cross-Site Request Forgery (CSRF) adalah serangan keamanan yang memanfaatkan otentikasi pengguna yang sah untuk melakukan tindakan yang tidak diinginkan di situs web yang rentan.
Serangan ini dapat memengaruhi integritas data dan keamanan pengguna. Ada beberapa cara untuk mencegah serangan CSRF, seperti penggunaan token CSRF, memeriksa header referer, penggunaan mekanisme otentikasi yang kuat, menambahkan konfirmasi aksi, menggunakan cookie dengan flag HttpOnly, dan menambahkan captcha atau reCaptcha.
Dengan menerapkan tindakan pencegahan ini, situs web dapat meningkatkan keamanan mereka dan melindungi pengguna mereka dari serangan CSRF.