Postingan lainnya
Cara agar token jwt tidak dapat digunakan diluar dari website atau aplikasi saya
saya sedang membangun sebuah aplikasi web dan mobile dengan menggunakan api yang menggunakan autentikasi JWT. saat user login akan mendapatkan token JWT dan di simpan di local storage browser.
yang ingin saya tanyakan adalah bagai mana agar token JWT yang di dapatkan user tidak digunakan langsung ke api backend tanpa harus mengakses data dari akses web atau mobile dalam artian user menggunakan curl atau bypass FrontEnd
Terima Kasih sebelumnya (^_^)
4 Jawaban:
selipkan token di header curl
<a href=' https://stackoverflow.com/questions/3044315/how-to-set-the-authorization-header-using-curl '>cara mengirim token di curl via stackoverflow</a>
maaf kalau pertanyaan saya agak membingungkan :D
tapi yang ingin saya tanyakan bagai mana cara agar token JWT saya hanya bisa di akses dari frontend angular saja dan tidak dapat digunakan atau tidak direspon jika melakukan request dari CURL
Tanggapan
kalau ada tanggapan tulis di "komentar" ya, jangan jadi jawaban :D
Di servernya atur Access-Control-Allow-Origin: example.com jadi hanya bisa diakses dari domain yang kamu tentukan saja. Tapi seperti yang ditulis, cURL cukup powerful, ada banyak opsi di headernya yang bisa diubah
Cara lainnya yang bisa dicoba untuk mengakali cURL, adalah dengan menyediakan "csrf token". Token ini hanya digenerate saat user membuka halaman, dan akan teracak lagi saat sudah submit form tertentu. Jadi walaupun orang pakai cURL, dia tetap harus mendapatkan token yang baru (alias submit/refresh halaman) . Jadi bisa digunakan untuk meminimalisir hal yang tidak diinginkan.
tapi jika di jalankan di curl dengan manambahkan command seperti di bawah ini tetap akan bisa menerima akses jika di batasi menggunakan Access-Control-Allow-Origin
curl_setopt($ch,CURLOPT_HTTPHEADER,array('Origin: example.com'));
Tanggapan
iyap betul, curl memang powerful, user agent asal browser pun harusnya bisa diedit. Sejauh ini saya belum melihat cara mendeteksinya, kalau ada referensi akan saya jawab lagi
saya sudah update jawaban sebelumnya, untuk jadi refrensi