Local Storage adalah tempat penyimpanan data dalam bentuk

Dalam konteks JWT , Stormpath telah menulis artikel yang cukup membantu menguraikan cara yang mungkin untuk menyimpannya, dan (perbedaan) keuntungan yang berkaitan dengan masing-masing metode.

Ini juga memiliki gambaran singkat tentang serangan XSS dan CSRF, dan bagaimana Anda dapat memerangi mereka.

Saya telah melampirkan beberapa cuplikan singkat dari artikel di bawah ini, jika artikel mereka diambil offline/situs mereka turun.

Penyimpanan lokal

Masalah:

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 berupaya menyuntikkan JavaScript melalui input formulir, tempat penyerang memberi peringatan ('Anda Dibajak'); ke dalam formulir untuk melihat apakah dijalankan oleh browser dan dapat dilihat oleh pengguna lain.

Pencegahan:

Untuk mencegah XSS, respons umum adalah melarikan diri dan menyandikan semua data yang tidak dipercaya. Tapi ini jauh dari cerita lengkap. Pada 2015, aplikasi web modern menggunakan JavaScript yang diinangi pada CDN atau infrastruktur luar. Aplikasi web modern termasuk perpustakaan JavaScript pihak ke-3 untuk pengujian A/B, analisis saluran/pasar, dan iklan. Kami menggunakan manajer paket seperti Bower untuk mengimpor kode orang lain ke 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 bisa membuat Penyimpanan Web semua orang yang mengunjungi situs Anda, tanpa sepengetahuan mereka. Ini mungkin mengapa banyak organisasi menyarankan untuk tidak menyimpan sesuatu yang bernilai atau mempercayai informasi apa pun dalam penyimpanan web. Ini termasuk pengidentifikasi dan token sesi.

Sebagai mekanisme penyimpanan, Penyimpanan Web tidak menerapkan standar aman 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.

Kue

Masalah:

Cookie, ketika digunakan dengan bendera cookie HttpOnly, tidak dapat diakses melalui JavaScript, dan kebal terhadap XSS. Anda juga dapat mengatur bendera cookie Aman untuk menjamin cookie hanya dikirim melalui HTTPS. Ini adalah salah satu alasan utama bahwa cookie telah diungkit di masa lalu untuk menyimpan token atau data sesi. Pengembang modern ragu-ragu untuk menggunakan cookie karena mereka secara tradisional mengharuskan negara untuk disimpan di server, sehingga melanggar praktik terbaik yang tenang. Cookie sebagai mekanisme penyimpanan tidak mengharuskan status disimpan di server jika Anda menyimpan JWT dalam cookie. Ini karena JWT merangkum semua yang dibutuhkan server untuk melayani permintaan.

Namun, cookie rentan terhadap berbagai jenis serangan: pemalsuan permintaan lintas situs (CSRF). Serangan CSRF adalah jenis serangan yang terjadi ketika situs web berbahaya, email, atau blog menyebabkan browser web pengguna untuk melakukan tindakan yang tidak diinginkan pada situs tepercaya di mana pengguna saat ini diautentikasi. Ini adalah eksploitasi bagaimana browser menangani cookie. Cookie hanya dapat dikirim ke domain yang diizinkan. Secara default, ini adalah domain yang awalnya mengatur cookie. Cookie akan dikirim untuk permintaan terlepas dari apakah Anda berada di galaxies.com atau hahagonnahackyou.com.

Pencegahan:

CSRF dapat dicegah dengan menggunakan pola token yang disinkronkan. Ini terdengar rumit, tetapi semua kerangka kerja web modern memiliki dukungan untuk ini.

Misalnya, AngularJS memiliki solusi untuk memvalidasi bahwa cookie hanya dapat diakses oleh domain Anda. Langsung dari AngularJS docs:

Saat melakukan permintaan XHR, layanan $ http membaca token dari cookie (secara default, XSRF-TOKEN) dan menetapkannya sebagai header HTTP (X-XSRF-TOKEN). Karena hanya JavaScript yang berjalan di domain Anda yang dapat membaca cookie, server Anda dapat yakin bahwa XHR berasal dari JavaScript yang berjalan di domain Anda. Anda dapat membuat perlindungan CSRF ini tanpa kewarganegaraan dengan menyertakan klaim xsrfToken JWT:

{ "iss": "http://galaxies.com", "exp": 1300819380, "scopes": ["Explorer", "solar-harvester", "seller"], "sub": "", "xsrfToken": "d9b9714c-7ac0-42e0-8696-2dae95dbc33e" }

Memanfaatkan kerangka kerja aplikasi web Anda CSRF membuat cookies sangat kuat untuk menyimpan JWT. CSRF juga dapat dicegah sebagian dengan memeriksa tajuk HTTP Referer dan Origin dari API Anda. Serangan CSRF akan memiliki header Referer dan Origin yang tidak terkait dengan aplikasi Anda.

Artikel lengkap dapat ditemukan di sini: https://stormpath.com/blog/where-to-store-your-jwts-cookies-vs-html5-web-storage/

Mereka juga memiliki artikel bermanfaat tentang cara terbaik merancang dan mengimplementasikan JWT, berkaitan dengan struktur token itu sendiri: https://stormpath.com/blog/jwt-the-right-way/

Assalamualaikum wr. wb, kali ini saya akan menshare cara menggunakan local storage dan session storage. Local storage merupakan fungsi di javascript yang cara kerjanya sama seperti cookie ( data disimpan dalam browser )  tapi memiliki beberapa kelebihan kelebihan. Local storage dapat menyimpan data lebih aman dan lebih besar dibandingkan dengan cookie. Local storage juga dapat menyimpan data lebih dari 5 MB tanpa harus membebani performa browser. Banyak hal yang bisa dilakukan saat membangun aplikasi web dengan menggunakan fungsi ini dan dapat mempermudah anda dalam membuat atau membangun sebuah website yang lebih responsif di sisi client.

  1. window.localStorage : data yang disimpan tidak memiliki waktu expired
  2. window.sessionStorage : data yang disimpan akan hilang jika browes ditutup

Pada dasarnya untuk menggunakan localStorage dan sessionStorage sama, terlebih dahulu kita harus mengatur key dan value nya. Langsung saja berikut adalah penjelasan cara Menggunakan Local Storage dan Session Storage.

Penggunaan Local Storage

Untuk dapat menggunakan local storage sangat mudah, berikut adalah contoh cara penggunaan local storage.

//menset localStorage

localStorage.setItem("nama", "Agus");

//mendapatkan value

localStorage.getItem("nama");

//menghapus nilai

localStorage.removeItem("nama");

Penggunaan Session Storage

Sama seperti halnya local storage, script untuk menggunakan session storage juga tidak berbeda jauh. Berikut adalah contoh cara penggunaannya.

//menset localStorage

sessionStorage.setItem("nama", "Agus");

//mendapatkan value

sessionStorage.getItem("nama");

Mudah bukan, selanjutnya anda bisa gunakan sesuai dengan kebutuhan, dalam kasus saya sering saya kombinasikan dengan Jquery. Sekian tutorial saya mengenai cara Menggunakan Local Storage dan Session Storage. Semoga dapat bermanfaat terimakasih.