Bahasa Melayu

Alat pembangun · Penukar cap masa Unix

Sebab JWT anda tamat tempoh serta-merta: exp adalah dalam saat, bukan milisaat

· Mengapa ia penting

jwt cap masa keselamatan

Jam muatan JWT dijajarkan dengan pembaris zaman skala saat
Ilustrasi vektor ToolAcre asal

RFC 7519 mentakrifkan exp, iat dan nbf sebagai saat sejak zaman itu, dan mencampurkannya dengan jam milisaat menjadikan token tamat tempoh serta-merta atau tidak sama sekali. Siaran ini menerangkan format tuntutan dan cara menyemak masa token.

Dikeluarkan pada 10:00, tamat tempoh pada 10:00 — token ditolak pada penggunaan pertama dan jam pelayan yang bukan masalah

Token yang ditolak pada permintaan pertamanya mengundang syak wasangka pelayan menjadi condong, tetapi periksa tuntutan mentah sebelum menukar jam. Jika satu komponen menjana `exp` daripada jam milisaat manakala satu lagi membandingkan NumericDate saat, nilainya berbeza mengikut tiga susunan magnitud. Tiada pelarasan penyegerakan biasa menjelaskan jurang itu.

Gunakan token buang atau token yang disunting kerana token pembawa ialah bukti kelayakan. Penyahkod JWT ToolAcre membaca data muatan tetapi sengaja tidak mengesahkan tandatangan. Salin tuntutan masa berangka ke dalam penukar cap masa sahaja selepas mengekalkan lekapan ujian asal dan jangka hayatnya.

Apa yang RFC 7519 katakan — NumericDate sebagai saat sejak 1970-01-01T00:00:00Z dan mengapa ia adalah nombor dan bukannya rentetan

Artikel JWT yang diterbitkan bersebelahan telah menyatakan kontrak penting: `exp` NumericDate mengira saat dari zaman Unix. Mengulangi penjelasan piawaiannya tidak akan menambah nilai di sini. Soalan praktikal ialah sama ada setiap pengeluar, penyeri bersiri, pengesah dan lekapan ujian menghormati skala yang sama.

Cari kod sempadan yang jelas: jam milisaat dibahagikan kepada saat semasa mengeluarkan dan perbandingan saat semasa mengesahkan. Tuntutan hendaklah kekal sebagai nombor dan bukannya tarikh berformat yang digunakan untuk aritmetik. UTC yang boleh dibaca manusia ialah unjuran diagnostik, bukan perwakilan berwibawa token.

Sematkan kontrak ini dalam ujian pengeluar dan pengesah dengan nilai bukan sifar. Ujian menggunakan epoch zero tidak boleh mendedahkan sama ada mana-mana bahagian dibahagikan atau didarab dengan seribu.

Artikel JWT sedia ada menetapkan NumericDate saat; artikel ini menggunakan fakta itu untuk menyahpepijat tamat tempoh

Jika pengesah menafsirkan tuntutan saat yang sah sebagai milisaat, tarikh jatuh berhampiran 1970 dan kelihatan tamat tempoh. Jika pengeluar menulis nilai milisaat semasa ke dalam medan yang kemudiannya ditafsirkan sebagai saat, tamat tempoh bergerak jauh melebihi jangka hayat yang dimaksudkan atau melebihi julat yang disokong perpustakaan. Gejala yang muncul mengenal pasti bahagian mana yang memiliki ralat skala.

Elakkan "pembetulan" yang menerima kedua-dua borang berdasarkan kiraan digit. Itu menukar token yang cacat kepada protokol ganti kekal dan boleh menyembunyikan regresi pengeluar. Tolak nilai yang melanggar kontrak NumericDate aplikasi, penjanaan yang betul dan tambahkan lekapan yang membezakan saat daripada milisaat.

Kesilapan milisaat boleh menyebabkan penolakan serta-merta atau tamat tempoh jauh yang tidak munasabah bergantung pada bahagian mana yang salah

Nyahkod muatan untuk mendedahkan `exp`, `iat` dan `nbf` sebagai nilai mentah sebelum rangka kerja menukarnya. Bandingkan `exp − iat` dengan jangka hayat token yang dimaksudkan dalam beberapa saat. Semak `nbf` secara berasingan; token boleh tidak tamat tempoh tetapi tidak boleh digunakan. Jangan menyimpulkan ketulenan dari masa yang kelihatan munasabah.

Penyahkod ToolAcre melaporkan bahawa pengesahan tandatangan adalah palsu, jadi outputnya tergolong dalam penyahpepijatan, bukan kebenaran. Muatan yang diubah suai boleh mengandungi sebarang tamat tempoh yang dipilih oleh penyerang. Pengesah aplikasi yang dipercayai masih mesti menguatkuasakan dasar algoritma, kunci, pengeluar, khalayak dan masa pada token padat asal.

Contoh yang berjaya: exp 1700003600 — menukarkannya kepada UTC dan waktu tempatan, menyemaknya terhadap iat dan mengesahkan seumur hidup adalah perkara yang anda mahu

Untuk `iat = 1,700,000,000` dan `exp = 1,700,003,600`, penolakan menghasilkan 3,600 saat, atau satu jam. Penukar membaca tamat tempoh secara eksplisit sebagai saat dan mengembalikan `2023-11-14T23:13:20.000Z`; masa keluaran ialah `2023-11-14T22:13:20.000Z`.

Nombor tersebut adalah unik untuk contoh diagnostik artikel ini. Jika memilih milisaat menghasilkan bacaan 1970 Januari, itu dijangkakan bukti skala yang salah. Sahkan bahawa masa semasa pengesah juga dinyatakan dalam beberapa saat sebelum membuat kesimpulan dasar satu jam dilaksanakan dengan betul.

Perbezaan satu jam dikira sebelum memformat, jadi ia kekal satu jam di setiap zon. Paparan setempat mungkin berbeza, tetapi `exp − iat` tidak.

Contoh yang berjaya: bandingkan exp 1,700,003,600 dengan iat berdekatan menggunakan saat yang jelas

Pengesah boleh membenarkan toleransi kecil yang ditentukan aplikasi sekitar tuntutan masa untuk menampung perbezaan jam yang sederhana. Repositori ini tidak menentukan bilangan saat yang disyorkan, jadi tiada kelonggaran universal ditetapkan di sini. Dasar keselamatan dan konfigurasi perpustakaan adalah pihak berkuasa.

Toleransi harus kekal kecil berbanding faktor seribu. Memperluaskannya sehingga tuntutan yang cacat lulus melemahkan penguatkuasaan tamat tempoh dan membiarkan pepijat pengeluar hidup. Mula-mula normalkan unit jam dan penyegerakan; kemudian tentukan sama ada elaun terhad berfungsi dengan model ancaman aplikasi.

Jika toleransi dikonfigurasikan, uji nilai sahaja di dalam dan di luar sempadan itu dalam beberapa saat. Ini membuktikan dasar secara bebas daripada sebarang pemaparan Tarikh atau tempat.

Toleransi tidak boleh membaiki faktor-1,000 ketidakpadanan

Penukaran cap masa tidak boleh mengesahkan tandatangan token, algoritma yang dibenarkan, kunci, pengeluar atau khalayak. Malah tuntutan `exp` yang diformat dengan sempurna pada masa hadapan mungkin terdapat dalam token palsu. Penyahkod JWT sengaja telus tentang sempadan ini dan harus digandingkan dengan pengesah yang dipercayai.

Ia juga tidak dapat menentukan sama ada token pengeluaran yang ditangkap telah dibatalkan atau sama ada dasar sesi mengatasi tamat tempoh nominalnya. Nyahpepijat nilai dengan lekapan tidak sensitif. Jika insiden sebenar memerlukan pemeriksaan kelayakan, gunakan persekitaran yang dibenarkan dan prosedur pengendalian dan bukannya aliran kerja papan keratan umum.

Penyahkodan hendaklah berlaku sahaja dengan lekapan sintetik atau disunting dengan selamat semasa penyahpepijatan rutin. Menyalin bukti kelayakan pembawa langsung mewujudkan masalah keselamatan yang tidak berkaitan dengan aritmetik cap masa.

Bawa pulang: exp ialah sepuluh digit, bukan tiga belas — dan cara penyahkod JWT dan penukar cap waktu Unix berada dalam tab yang sama supaya anda boleh menyemak tuntutan dalam beberapa saat

Anggap JWT tuntutan masa sebagai saat di setiap sempadan dan uji perbezaannya sebagai tempoh. Penukar cap masa menukar tuntutan individu kepada UTC dan konteks setempat; penyahkod JWT mendedahkan nombor mentah. Bersama-sama mereka menerangkan masa tanpa menuntut kepercayaan.

Pembetulan tahan lama tergolong dalam pengeluaran dan kod pengesahan, bukan dalam buku panduan sokongan yang menogol unit sehingga token berfungsi. Kekalkan saat yang jelas, tolak skala yang cacat dan pastikan pengesahan tandatangan sebagai keputusan mandatori yang berasingan.

Pemisahan itu juga meningkatkan kebolehmerhatian: log penjanaan boleh melaporkan dasar tempoh tanpa mendedahkan token, manakala metrik pengesahan boleh membezakan hasil tandatangan yang tamat tempoh, pramatang dan tidak sah.