Di sebagian besar aplikasi satu halaman modern, kita memang harus menyimpan token di suatu tempat di sisi klien (kasus penggunaan paling umum - untuk menjaga pengguna tetap masuk setelah penyegaran halaman).
Ada total 2 opsi yang tersedia: Penyimpanan Web (penyimpanan sesi, penyimpanan lokal) dan cookie sisi klien. Kedua opsi ini banyak digunakan, tetapi ini tidak berarti mereka sangat aman.
Tom Abbott merangkum dengan baik sesi JWTSageage dan keamanan localStorage :
Penyimpanan Web (localStorage / sessionStorage) dapat diakses melalui JavaScript pada domain yang sama. Ini berarti bahwa setiap JavaScript yang berjalan di situs Anda akan memiliki akses ke penyimpanan web, dan karena ini dapat rentan terhadap serangan lintas situs (XSS) . Singkatnya, XSS, adalah jenis kerentanan di mana penyerang dapat menyuntikkan JavaScript yang akan berjalan di halaman Anda. Serangan XSS dasar mencoba untuk menyuntikkan JavaScript melalui input formulir, di mana penyerang memasukkan <script>alert('You are Hacked');</script>
ke dalam formulir untuk melihat apakah itu dijalankan oleh browser dan dapat dilihat oleh pengguna lain.
Untuk mencegah XSS, respons umum adalah melarikan diri dan menyandikan semua data yang tidak dipercaya. Bereaksi (kebanyakan) melakukannya untuk Anda! Berikut adalah diskusi hebat tentang seberapa banyak perlindungan kerentanan XSS yang Bereaksi bertanggung jawab atas .
Tapi itu tidak mencakup semua kemungkinan kerentanan! Ancaman potensial lainnya adalah penggunaan JavaScript yang diinangi pada CDN atau infrastruktur luar .
Ini Tom lagi:
Aplikasi web modern termasuk perpustakaan JavaScript pihak ketiga untuk pengujian A / B, analisis saluran / pasar, dan iklan. Kami menggunakan manajer paket seperti Bower untuk mengimpor kode orang lain ke dalam aplikasi kami.
Bagaimana jika hanya satu dari skrip yang Anda gunakan yang dikompromikan? JavaScript berbahaya dapat disematkan pada halaman, dan Penyimpanan Web dikompromikan. Jenis serangan XSS ini dapat membuat Penyimpanan Web semua orang yang mengunjungi situs Anda, tanpa sepengetahuan mereka. Ini mungkin sebabnya banyak organisasi menyarankan untuk tidak menyimpan sesuatu yang bernilai atau mempercayai informasi apa pun dalam penyimpanan web. Ini termasuk pengidentifikasi dan token sesi.
Oleh karena itu, kesimpulan saya adalah bahwa sebagai mekanisme penyimpanan, Penyimpanan Web tidak memberlakukan standar keamanan apa pun selama transfer . Siapa pun yang membaca Penyimpanan Web dan menggunakannya harus melakukan uji tuntas untuk memastikan mereka selalu mengirim JWT melalui HTTPS dan tidak pernah HTTP.