Pemalsuan Permintaan Silang Tapak (CSRF) ialah salah satu cara tertua untuk mengeksploitasi kelemahan tapak web. Ia menyasarkan suis web sebelah pelayan yang biasanya memerlukan pengesahan seperti log masuk. Semasa serangan CSRF, penyerang bertujuan untuk memaksa mangsanya membuat permintaan web yang tidak dibenarkan dan berniat jahat bagi pihak mereka.
Amalan keselamatan laman web yang lemah atau lemah dan kecuaian di laluan pengguna adalah antara punca biasa serangan CSRF yang berjaya.
Mari lihat apa itu serangan CSRF dan kemungkinan cara anda boleh menghalang diri anda daripadanya sebagai pembangun atau sebagai pengguna.
Bagaimanakah Serangan CSRF Mempengaruhi Anda?
CSRF ialah serangan yang digunakan untuk melaksanakan permintaan yang tidak dibenarkan semasa tindakan web yang memerlukan log masuk atau pengesahan pengguna. Serangan CSRF boleh mengambil kesempatan daripada ID sesi, kuki, serta kelemahan berasaskan pelayan lain untuk mencuri bukti kelayakan pengguna.
Contohnya, mendayakan prosedur anti-CSRF menghalang interaksi hasad merentas domain.
Sebaik sahaja halangan itu dipecahkan, penyerang boleh dengan cepat memanfaatkan ID sesi pengguna melalui kuki yang dibuat oleh penyemak imbas pengguna dan membenamkan teg skrip ke dalam tapak web yang terdedah.
Dengan memanipulasi ID, penyerang juga boleh mengubah hala pelawat ke halaman web lain atau mengeksploitasi kaedah kejuruteraan sosial seperti e-mel untuk menghantar pautan, menggalakkan mangsa memuat turun perisian berniat jahat.
Sebaik sahaja mangsa melakukan tindakan sedemikian, ia menghantar permintaan HTTP ke halaman perkhidmatan pengguna dan membenarkan tindakan permintaan memihak kepada penyerang. Itu boleh memusnahkan pengguna yang tidak curiga.
Serangan CSRF yang berjaya boleh menyebabkan pengguna yang diberi kuasa kehilangan kelayakan akses mereka kepada penyerang, terutamanya semasa tindakan berasaskan pelayan seperti permintaan pertukaran kata laluan atau nama pengguna. Dalam senario yang lebih teruk, penyerang mengambil alih keseluruhan sesi dan bertindak bagi pihak pengguna.
CSRF telah digunakan untuk merampas transaksi dana melalui web serta menukar nama pengguna dan kata laluan, yang menyebabkan pengguna kehilangan akses kepada perkhidmatan yang terjejas.
Cara Penyerang Merampas Sesi Anda Dengan CSRF: Contoh
Sasaran utama untuk serangan CSRF ialah tindakan web yang melibatkan pengesahan pengguna. Untuk berjaya, ia memerlukan tindakan yang tidak disengajakan daripada mangsa.
Semasa serangan CSRF, tindakan GET, DELETE dan PUT, serta permintaan POST yang terdedah adalah sasaran utama penyerang.
Mari kita lihat maksud istilah tersebut:
- DAPATKAN: Permintaan untuk mengumpul hasil daripada pangkalan data; contohnya, carian Google.
- POST: Biasanya untuk menghantar permintaan melalui borang web. Permintaan POST adalah perkara biasa semasa pendaftaran atau log masuk pengguna, atau dikenali sebagai pengesahan.
- PADAM: Untuk mengalih keluar sumber daripada pangkalan data. Anda melakukan ini setiap kali anda memadamkan akaun anda daripada perkhidmatan web tertentu.
- PUT: Permintaan PUT mengubah suai atau mengemas kini sumber sedia ada. Contohnya ialah menukar nama Facebook anda .
Dalam amalan, penyerang menggunakan rampasan sesi untuk menyandarkan serangan CSRF. Apabila menggunakan gabungan ini, penyerang boleh menggunakan rampasan untuk menukar alamat IP mangsa.
Perubahan dalam alamat IP kemudian log mangsa ke dalam tapak web baharu di mana penyerang telah memasukkan pautan menipu yang menyerahkan borang yang direplikasi atau permintaan pelayan yang diubah suai yang mereka buat melalui CSRF.
Pengguna yang tidak curiga kemudian menganggap ubah hala itu datang daripada pembekal perkhidmatan dan mengklik pautan pada halaman web penyerang. Setelah mereka melakukan ini, penggodam menyerahkan borang pada pemuatan halaman tanpa pengetahuan mereka.
Contoh Serangan CSRF Permintaan GET
Bayangkan cuba membuat pembayaran dalam talian melalui platform e-dagang yang tidak selamat. Pemilik platform menggunakan permintaan GET untuk memproses transaksi anda. Pertanyaan GET itu mungkin kelihatan seperti ini:
https://websiteurl/pay?amount=$10&company=[company ABC's account]
Perampas boleh mencuri transaksi anda dengan mudah dengan menukar parameter permintaan GET. Untuk melakukan ini, apa yang mereka perlu lakukan ialah menukar nama anda dengan nama mereka, dan lebih teruk lagi, menukar jumlah yang anda ingin bayar. Mereka kemudian mengubah pertanyaan asal kepada sesuatu seperti ini:
https://websiteurl/pay?amount=$20000&company=[attacker's account]
Sebaik sahaja anda mengklik pautan ke permintaan GET yang diubah suai itu, anda akhirnya membuat pemindahan yang tidak disengajakan ke akaun penyerang.
Berurus niaga melalui permintaan GET adalah amalan buruk dan menjadikan aktiviti terdedah kepada serangan.
Contoh Serangan CSRF Permintaan POST
Walau bagaimanapun, ramai pembangun percaya bahawa menggunakan permintaan POST adalah lebih selamat untuk membuat transaksi web. Walaupun itu benar, malangnya, permintaan POST juga terdedah kepada serangan CSRF.
Untuk berjaya merampas permintaan POST, semua yang diperlukan oleh penyerang ialah ID sesi semasa anda, beberapa bentuk tidak kelihatan yang direplikasi dan kadangkala, sedikit kejuruteraan sosial.
Sebagai contoh, borang permintaan POST mungkin kelihatan seperti ini:
Walau bagaimanapun, penyerang boleh menukar kelayakan anda dengan membuat halaman baharu dan mengubah suai borang di atas menjadi ini:
Dalam borang yang dimanipulasi, penyerang menetapkan nilai medan amaun kepada "30000", menukar nombor akaun penerima kepada nombor akaun mereka, menyerahkan borang pada pemuatan halaman dan juga menyembunyikan medan borang daripada pengguna.
Sebaik sahaja mereka merampas sesi semasa itu, halaman transaksi anda memulakan ubah hala ke halaman penyerang, yang menggesa anda untuk mengklik pautan yang mereka tahu kemungkinan besar anda lawati.
Mengklik ini memuatkan penyerahan borang yang direplikasi, yang memindahkan dana anda ke dalam akaun penyerang. Ini bermakna anda tidak perlu mengklik butang seperti "hantar" untuk urus niaga berlaku, kerana JavaScript melakukan ini secara automatik apabila memuatkan halaman web seterusnya.
Sebagai alternatif, penyerang juga boleh mendraf e-mel terbenam HTML yang menggesa anda mengklik pautan untuk melaksanakan penyerahan borang beban halaman yang sama.
Satu lagi tindakan yang terdedah kepada serangan CSRF ialah nama pengguna atau perubahan kata laluan, contoh permintaan PUT. Penyerang mereplikasi borang permintaan anda dan menggantikan alamat e-mel anda dengan mereka.
Kemudian mereka mencuri sesi anda dan sama ada mengubah hala anda ke halaman atau menghantar e-mel kepada anda yang menggesa anda mengklik pautan yang menarik.
Itu kemudian menyerahkan borang yang dimanipulasi yang menghantar pautan tetapan semula kata laluan ke alamat e-mel penggodam dan bukannya alamat anda. Dengan cara itu, penggodam menukar kata laluan anda dan melog anda keluar daripada akaun anda.
Cara Mencegah Serangan CSRF sebagai Pembangun
Salah satu kaedah terbaik untuk menghalang CSRF ialah menggunakan token yang kerap berubah dan bukannya bergantung pada kuki sesi untuk menjalankan perubahan keadaan pada pelayan.
Berkaitan: Panduan Percuma untuk Memahami Keselamatan Digital dan Melindungi Privasi Anda
Banyak rangka kerja bahagian belakang moden menawarkan keselamatan terhadap CSRF. Oleh itu, jika anda ingin mengelak dari segi teknikal mempertingkatkan CSRF sendiri, anda boleh menanganinya dengan mudah dengan menggunakan rangka kerja sebelah pelayan yang disertakan dengan token anti-CSRF terbina dalam.
Apabila anda menggunakan token anti-CSRF, permintaan berasaskan pelayan menghasilkan rentetan rawak dan bukannya kuki sesi terdedah yang lebih statik. Dengan cara itu, anda boleh melindungi sesi anda daripada diduga oleh perampas.
Melaksanakan sistem pengesahan dua faktor (2FA) untuk menjalankan transaksi pada apl web anda juga mengurangkan peluang CSRF.
Anda boleh memulakan CSRF melalui skrip rentas tapak (XSS), yang melibatkan suntikan skrip ke dalam medan pengguna seperti borang ulasan. Untuk mengelakkan ini, adalah amalan yang baik untuk mendayakan HTML auto-escape dalam semua medan borang pengguna di seluruh tapak web anda. Tindakan itu menghalang medan borang daripada mentafsir elemen HTML.
Cara Mencegah Serangan CSRF sebagai Pengguna
Sebagai pengguna perkhidmatan web yang melibatkan pengesahan, anda perlu memainkan peranan dalam menghalang penyerang daripada mencuri bukti kelayakan dan sesi anda melalui CSRF juga.
Pastikan anda menggunakan perkhidmatan web yang dipercayai semasa aktiviti yang melibatkan pemindahan dana.
Di samping itu, gunakan penyemak imbas web selamat yang melindungi pengguna daripada pendedahan sesi, serta enjin carian selamat yang melindungi daripada kebocoran data carian.
Berkaitan: Enjin Carian Peribadi Terbaik Yang Menghormati Data Anda
Sebagai pengguna, anda juga boleh bergantung pada pengesah pihak ketiga seperti Google Authenticator atau alternatifnya untuk mengesahkan identiti anda melalui web.
Walaupun anda mungkin berasa tidak berdaya untuk menghentikan penyerang daripada merampas sesi anda, anda masih boleh membantu menghalang perkara ini dengan memastikan penyemak imbas anda tidak menyimpan maklumat seperti kata laluan dan butiran log masuk lain.
Tingkatkan Keselamatan Web Anda
Pembangun perlu kerap menguji apl web untuk pelanggaran keselamatan semasa pembangunan dan penggunaan.
Walau bagaimanapun, adalah perkara biasa untuk memperkenalkan kelemahan lain semasa cuba menghalang orang lain. Jadi berhati-hati untuk memastikan bahawa anda tidak melanggar parameter keselamatan lain semasa cuba menyekat CSRF.