Dari apa yang saya pelajari sejauh ini, tujuan token adalah untuk mencegah penyerang memalsukan pengiriman formulir.
Misalnya, jika situs web memiliki formulir yang memasukkan item tambahan ke keranjang belanja Anda, dan penyerang bisa mengirim spam keranjang belanja Anda dengan barang-barang yang tidak Anda inginkan.
Ini masuk akal karena mungkin ada beberapa input yang valid untuk formulir keranjang belanja, yang harus dilakukan penyerang hanyalah mengetahui item yang dijual oleh situs web.
Saya mengerti bagaimana token bekerja dan menambah keamanan dalam kasus ini, karena mereka memastikan pengguna benar-benar mengisi dan menekan tombol "Kirim" dari formulir untuk setiap item yang ditambahkan ke keranjang.
Namun, apakah token menambah keamanan ke formulir login pengguna, yang memerlukan nama pengguna dan kata sandi?
Karena nama pengguna dan kata sandi sangat unik, penyerang harus mengetahui keduanya agar pemalsuan masuk berfungsi (bahkan jika Anda tidak memiliki pengaturan token), dan jika penyerang sudah mengetahui hal itu, ia bisa langsung masuk ke situs web diri. Belum lagi, serangan CSRF yang membuat pengguna masuk sendiri tidak akan memiliki tujuan praktis.
Apakah pemahaman saya tentang serangan dan token CSRF benar? Dan apakah mereka tidak berguna untuk formulir login pengguna seperti yang saya duga?
Jawaban:
Iya. Secara umum, Anda perlu mengamankan formulir login Anda dari serangan CSRF sama seperti yang lain.
Kalau tidak, situs Anda rentan terhadap serangan "phising domain tepercaya". Singkatnya, halaman login CSRF-rentan memungkinkan penyerang untuk berbagi akun pengguna dengan korban.
Kerentanan bermain seperti ini:
Sebagai contoh terkait, pertimbangkan YouTube . YouTube memungkinkan pengguna untuk melihat catatan riwayat tontonan "mereka sendiri", dan formulir masuk mereka rentan terhadap CSRF! Jadi sebagai hasilnya, penyerang bisa membuat account dengan password mereka tahu, login korban ke YouTube menggunakan yang akun - menguntit apa video korban sedang menonton.
Ada beberapa diskusi di utas komentar ini yang menyiratkan bahwa "hanya" dapat digunakan untuk pelanggaran privasi seperti itu. Mungkin, tetapi mengutip bagian dalam artikel CSRF Wikipedia :
Penekanan pada "serangan novel". Bayangkan dampak serangan phishing terhadap pengguna Anda, lalu bayangkan kata serangan phishing bekerja melalui bookmark tepercaya milik pengguna ke situs Anda! Makalah yang terhubung dalam utas komentar tersebut memberikan beberapa contoh yang melampaui serangan privasi sederhana.
sumber
http://good.com/login.html
dalam satu klien, mengurai token CSRF bersarang, dan kemudian menerbitkanhttp://bad.com/login.html
yang berisi bentuk modifikasi yang mengajukan nya username, password dan Token terlepas dari apa jenis korban dalam. CORS tidak berlaku karena Anda' Saya punya dua klien terpisah: penyerang dan korban. Jadi untuk mengulangi pertanyaan: apakah perlindungan CSRF benar-benar berfungsi untuk formulir masuk?Pemahaman Anda benar - inti dari CSRF adalah bahwa penyerang dapat memalsukan permintaan yang tampak sah dari sebelumnya. Tetapi ini tidak dapat dilakukan dengan formulir login kecuali penyerang mengetahui nama pengguna dan kata sandi korban, dalam hal ini ada cara yang lebih efisien untuk menyerang (masuk sendiri).
Pada akhirnya satu-satunya hal yang dapat dilakukan penyerang adalah ketidaknyamanan pengguna Anda dengan melakukan spam login gagal, ketika sistem keamanan mungkin mengunci pengguna untuk jangka waktu tertentu.
sumber
Ya , jadi situs web lain tidak dapat meniru formulir login Anda! Sesimpel itu.
Apa yang bisa mereka capai dengan melakukannya?
n
no. Terkadang, bisa dihindari.sumber
Pra-masuk validasi CSRF tidak masuk akal IMHO.
Terima kasih kepada @squiddle untuk tautannya: seclab.stanford.edu/websec/csrf/csrf.pdf , kita dapat membaca di halaman pertama:
Jika Anda mencoba pra-masuk validasi CSRF, maka Anda memberi peluang penyerang peluang untuk mengikis kode yang valid dari situs web Anda! Dia kemudian dapat memposting ulang token mengalahkan tujuannya.
Mungkin penyerang kemudian dapat mencoba menebak nama pengguna situs Anda. Apa yang saya lakukan, jika alamat IP mencoba menebak katakan 10 nama pengguna tanpa hasil, saya hanya daftar hitam itu.
sumber