نحوه استفاده
- انتخاب کنید هر توکن حاوی چند بایت تصادفی باشد. ۳۲ بایت (۲۵۶ بیت) پیشفرض امنی برای رمزهاست.
- کدگذاریای را برگزینید که متناسب با محل استفاده توکن باشد و در صورت تمایل پیشوندی مانند «myapp_live_» اضافه کنید.
- تعداد توکنهای مورد نیاز را تعیین کنید، سپس یکی را کپی کنید یا از «کپی همه» استفاده کنید. برای دریافت مجموعهای تازه، «تولید دوباره» را بزنید.
نحوه کار
توکنها از بایتهای تصادفی تولیدشده توسط crypto.getRandomValues ساخته میشوند؛ تولیدکنندهٔ امن رمزنگاری که در مرورگر و سیستمعامل شما تعبیه شده است. هرگز از Math.random استفاده نمیشود.
برای hex، Base64 و Base64URL، ابزار دقیقاً همان تعداد بایتی که انتخاب میکنید را میگیرد و کدگذاری میکند؛ بنابراین یک توکن 32 بایتی همیشه 256 بیت آنتروپی دارد: 64 نویسهٔ hex، 44 نویسهٔ Base64 (شامل یک = برای padding) یا 43 نویسهٔ Base64URL. Base64URL علامتهای + و / را با - و _ جایگزین میکند و padding را حذف میکند؛ بنابراین میتوان از آن در URLها، نام فایلها و هدرهای HTTP بدون escape کردن استفاده کرد.
توکنهای الفبایی-عددی فقط از A–Z، a–z و 0–9 استفاده میکنند که از نویسههایی که برخی سیستمها بهطور خاص با آنها رفتار میکنند اجتناب میکند. هر نویسه حدود 5.95 بیت حمل میکند، بنابراین ابزار به تعداد کافی نویسه تولید میکند تا حداقل به تعداد بیت انتخابی برسد (43 نویسه برای 256 بیت). نویسهها با نمونهگیری رد (rejection sampling) انتخاب میشوند تا همهٔ 62 نویسه به یک اندازه محتمل باشند.
پیشوند بهصورت متن ساده اضافه میشود و هیچ آنتروپیای اضافه نمیکند. پیشوندهایی مانند “sk_live_” شناسایی کلیدهای لو رفته را با ابزارهای اسکنر راز (secret scanner) آسانتر میکنند. کلیدهای مخفی را در مدیر رمز عبور یا مخزن راز نگهداری کنید، نه در کد منبع.
نمونهها
رمز امضای وبهوک
32 بایت در قالب hex یک رمز 64 نویسهای با 256 بیت آنتروپی میدهد که میتوانید آن را در پیکربندی فرستنده و گیرنده برای امضای HMAC-SHA-256 جایگذاری کنید.
کلید API با پیشوند قابل تشخیص
24 بایت، Alphanumeric و پیشوند “acme_live_” را انتخاب کنید. هر کلید به شکل acme_live_ به همراه 33 حرف و رقم است، حداقل 192 بیت دارد و در لاگها یا اسکنر راز بهراحتی قابل تشخیص است.
توکن بازنشانی امن برای URL
16 بایت در قالب Base64URL یک توکن 22 نویسهای (128 بیت) میدهد که میتوان مستقیماً در پیوندی مانند /reset?token=… بدون percent-encoding قرار داد.
پرسشهای متداول
یک راز باید چند بایت داشته باشد؟
128 بیت (16 بایت) برای غیرممکن ساختن حدس زدن برای توکنهایی مانند شناسههای نشست کافی است. برای رازهای طولانیعمر مانند کلیدهای امضا، 256 بیت (32 بایت) پیشنهاد رایج است و با اندازهٔ خروجی SHA-256 مطابقت دارد.
کدام کدگذاری را باید انتخاب کنم؟
آنتروپی برای تعداد بایت مشخص یکسان است؛ فقط شکل متنی تفاوت دارد. برای بیشترین سازگاری از hex استفاده کنید، برای توکنهای کوتاه در URLها و سرآیندها از Base64URL و زمانی که سامانهای علائم نگارشی را نمیپذیرد از الفباییعددی استفاده کنید.
آیا توکنها ذخیره یا ثبت میشوند؟
خیر. آنها در همین زبانه مرورگر تولید میشوند و با ترک صفحه از بین میروند. به سروری ارسال نمیشوند و در دادههای تحلیلی گنجانده نمیشوند.
آیا میتوانم از اینها بهعنوان رمز عبور استفاده کنم؟
بله، به اندازه کافی تصادفی هستند، اما سایتها اغلب به ترکیبی از انواع نویسه نیاز دارند. مولد رمز عبور به شما امکان میدهد آن قوانین را مستقیماً کنترل کنید.
حریم خصوصی
توکنها در مرورگر شما با crypto.getRandomValues تولید میشوند. آنها بارگذاری، ذخیره، ثبت یا به سیستم تحلیلی ارسال نمیشوند؛ فقط یک رویداد ناشناس مبنی بر استفاده از ابزار ثبت میشود.