UUID (شناسه یکتای جهانی) چیست؟
پاسخ کوتاه: UUID رشتهای ۱۲۸بیتی است که در توسعه نرمافزار برای شناسایی یکتای رکورد، فایل یا شیء در سیستمهای مختلف به کار میرود، بدون اینکه پایگاه داده مرکزی یکتایی را تأیید کند.
UUID مخفف Universally Unique Identifier است (در اکوسیستم مایکروسافت اغلب GUID یا Globally Unique Identifier گفته میشود). یک رشته الفباعددی استاندارد ۳۶ نویسهای (با خط تیره) است که اینطور به نظر میرسد: 550e8400-e29b-41d4-a716-446655440000.
ویژگی تعریفکننده UUID مقیاس ریاضی آن است. حدود 3.4 × 10^38 ترکیب ممکن UUID وجود دارد. چون این عدد نجومی است، توسعهدهنده میتواند UUID را مستقل روی سرورها یا برنامههای کاربر مختلف بسازد و نگران برخورد دو شناسه نباشد.
چرا UUID نسخه ۴ استاندارد صنعت برای پایگاه داده است
پاسخ کوتاه: بر خلاف نسخههای قدیمی که نشانی MAC یا مهر زمان را جاسازی میکردند، UUID نسخه ۴ کاملاً به تولید شبهتصادفی رمزنگاری تکیه دارد. برای کلید اصلی در پایگاه توزیعشده مثل PostgreSQL یا MongoDB مناسب است چون ناشناسی و مقاومت در برابر برخورد میدهد.
چند نسخه UUID در مشخصات RFC 4122 تعریف شده. نسخه ۱ به زمان ساخت و نشانی MAC رایانه سازنده تکیه دارد. یکتایی را تضمین میکند اما ریسک حریم خصوصی دارد، چون مهاجم میتواند زمان ساخت رکورد و سختافزار شبکه را مهندسی معکوس کند.
نسخه ۴ (v4) این مشکل را با تصادفی بودن کامل حل میکند. هر بیت (جز چند بیت رزرو نسخه) با موتور رمزنگاری ساخته میشود. چون متادیتای قابل شناسایی ندارد، UUID نسخه ۴ استاندارد توصیهشده جهانی برای توکن API، کلید اصلی پایگاه داده و شناسه نشست است.
خطر ساخت UUID با Math.random()
پاسخ کوتاه: Utiliome فقط از Web Crypto API برای ساخت UUID استفاده میکند. ابزارهایی که از Math.random() استاندارد JavaScript استفاده میکنند شناسه ضعیف و قابل پیشبینی میسازند که میتواند به برخورد فاجعهبار پایگاه داده و نقض امنیت منجر شود.
همه سازندههای UUID برای تولید امن نیستند. بسیاری از اسکریپتهای آموزشی سریع اینترنت از تابع داخلی Math.random() در JavaScript برای ساخت رشته ۳۶ نویسهای استفاده میکنند.
این نقص معماری جدی است. Math.random() یک مولد عدد شبهتصادفی (PRNG) است که با ساعت مرورگر بذر میشود. از نظر رمزنگاری امن نیست؛ مهاجم نظری میتواند خروجی را پیشبینی کند، یا بدتر، برنامه UUID تکراری (برخورد) بسازد و پایگاه داده را بهشدت خراب کند.
Utiliome تضمین میکند صددرصد UUIDها با window.crypto.getRandomValues() ساخته میشوند و آنتروپی واقعی از سختافزار سیستمعامل میگیرند.
چرا تولید محلی در مرورگر برای حریم خصوصی مهم است
پاسخ کوتاه: ساخت UUID روی سرور شخص ثالث شناسه یکتای برنامه را در معرض شنود شبکه میگذارد. Utiliome تولید ریاضی را کاملاً داخل RAM محلی مرورگر اجرا میکند.
اگر UUID را بهعنوان کلید امن API، توکن بازنشانی رمز یا شناسه نشست کاربر میسازید، هرگز نباید آن را با ابزار SEO ابری بسازید. فرستادن درخواست شبکه به سرور راه دور برای گرفتن UUID یعنی مدیر سرور میتواند توکن امن شما را لاگ کند.
معماری بدون سرور Utiliome اسکریپت تولید را روی دستگاه شما دانلود میکند. وقتی «ساخت» را میزنید، محاسبه آفلاین روی CPU خودتان انجام میشود. میتوانید اینترنت را قطع کنید و ابزار همچنان هزاران UUID امن ریاضی بسازد.
تولید دستهای برای بذر پایگاه داده
پاسخ کوتاه: موتور Utiliome بسیار بهینه است و به توسعهدهنده اجازه میدهد تا ۱۰٬۰۰۰ UUID را با یک کلیک برای آزمون نرمافزار و بذر پایگاه داده بسازد.
مهندس نرمافزار اغلب به هزاران شناسه یکتا نیاز دارد تا پایگاه توسعه را بذر کند، پاسخ ساختگی API بسازد یا الگوریتم صفحهبندی را تحت فشار آزمون کند.
ابزارهای وب سنتی شما را وادار میکنند «ساخت» را یکییکی بزنید، یا اگر دسته بزرگ از شبکه بخواهید مهلت تمام میشود. چون Utiliome از حافظه بومی سمت کاربر استفاده میکند، ابزار میتواند ۱۰٬۰۰۰ UUID را در چند میلیثانیه حساب و رندر کند، مرتب و آماده چسباندن در آرایه JSON یا دستور INSERT در SQL.
قالب UUID: خط تیره، حروف بزرگ و آکولاد
پاسخ کوتاه: بسته به پشته فناوری (مثلاً رجیستری ویندوز، PostgreSQL یا JSON استاندارد) ممکن است قالب رشته متفاوت بخواهید. Utiliome کلید فوری برای سفارشی کردن خروجی دیداری دارد.
مقدار ریاضی UUID یکسان میماند، اما موتورهای پایگاه داده نحو متفاوت میخواهند:
- استاندارد (با خط تیره):
550e8400-e29b... (پیشفرض Postgres و APIهای JSON)
- بدون خط تیره:
550e8400e29b... (در پارامتر URL یا ستون بهینه SQL)
- حروف بزرگ:
550E8400-E29B... (اغلب در سیستم قدیمی مایکروسافت/C# لازم است)
رابط Utiliome اجازه میدهد این گزینههای قالب را فوری عوض کنید، بدون جایگزینی پیچیده عبارت منظم در IDE.