
Meminjam Identitas Korban Secara Paksa
Jika SQL Injection menyerang database, dan XSS menyisipkan skrip nakal di layarmu, maka CSRF (Cross-Site Request Forgery) menyerang mekanisme "Kepercayaan" (Cookies) pada browsermu.
Ini adalah serangan yang sangat jenius karena *hacker* tidak mencuri password-mu. Mereka malah memanfaatkan status "Kamu sedang Login" untuk melakukan hal-hal ilegal.
Skenario Serangan CSRF (Bagaimana Hacker Beraksi)
Misalkan kamu baru saja Login ke website bank milikmu (mybank.com). Karena sistem bank itu menggunakan Session & Cookies, browsermu akan menyimpan stempel izin (Cookie) yang aktif selama kamu belum *Logout*.
Sambil minum kopi, kamu membuka tab baru dan iseng mengklik link hadiah di Twitter. Halaman itu adalah website *hacker* (evil-site.com). Di halaman jahat tersebut, ada sebuah gambar palsu yang tersembunyi (Invisible Image), namun *Source URL*-nya dimodifikasi seperti ini:
<img src="https://mybank.com/api/transfer?to=RekeningHacker&amount=100000" width="0" height="0">Apa yang Terjadi?
Browser melihat tag dan dengan patuh mencoba me-load (request) URL tersebut. Karena URL itu tertuju ke mybank.com, browser (dengan inisiatif bodohnya) langsung menyertakan Cookie Login-mu yang masih aktif di tab sebelah!
Server Bank menerima *request* tersebut. Ia mengecek Cookie, menyimpulkan bahwa "Oh ini Budi yang sedang login, dia minta transfer 100 ribu". Uangmu lenyap dalam sekedipan mata tanpa kamu harus memencet tombol apapun di layar bank.
Cara Mencegah CSRF (Anti-CSRF Token)
Untuk mencegah serangan ini, Backend *developer* menerapkan sebuah "Kata Sandi Sekali Pakai".
Setiap kali kamu membuka halaman form transfer di web Bank yang asli, server akan menyisipkan teks rahasia ke dalam form tersebut (dinamakan CSRF Token). Saat tombol *Submit* ditekan, server akan mencocokkan Token tersebut.
Jika *hacker* menyerang lewat web palsunya (evil-site.com), ia memang bisa menunggangi *Cookie*-mu, TAPI web palsu itu tidak mungkin bisa mengetahui atau menebak CSRF Token yang dibuat dinamis oleh server aslimu. Tanpa Token tersebut, server Bank akan langsung menolak dan memblokir *request* transfer dari si *hacker*.
Mau langsung pakai template?
Jelajahi template gratis dan premium di TampilKit untuk mempercepat proses development project kamu.
Browse Templates