
استفاده از UUID با LARAVEL 8
لاراول از اعداد صحیح افزایش دهنده خودکار به عنوان کلید اصلی پایگاه داده استفاده می کند مگر اینکه طور دیگری مشخص شده باشد. این یک راه حل ساده و مؤثر است که معمولاً نیاز را برآورده می کند. اما اگر کمی امنیت بیشتری لازم باشد، میتوانیم اعداد صحیح افزایش خودکار را با UUID جایگزین کنیم.
مشکل Auto-Increment چیست؟مشکل Auto-Increment چیست؟
لاراول هنگام ذخیره داده های مدل از اعداد صحیح افزایش خودکار به عنوان مشخص کننده استفاده می کند. این هم در سمت پایگاه داده بسیار کارآمد است و هم به خوبی کار می کند زیرا به راحتی می توان آن را فهرست کرد.
آنچه در اینجا می تواند مشکل ایجاد کند، پیش بینی آسان است. به عنوان مثال، شماره تخصیص خودکار سندی که به شما اجازه دسترسی به آن داده شده است 1045 است. بیایید فرض کنیم که شما به این سند در آدرس “www.domain.com/author/1045” دسترسی دارید. با مشاهده این آدرس می توان حدس زد که مدارک به شماره 1044 یا 1046 نیز ممکن است در سیستم وجود داشته باشد و به سادگی با تغییر آدرس می توانید با این اسناد تماس بگیرید. در صورت عدم رعایت احتیاطات لازم، امکان مواجهه با مشکلات دسترسی غیرمجاز بسیار زیاد است.
UUID چیست؟UUID چیست؟
یکی از رویکردهای برجسته برای ایمن سازی Unique Identifier استفاده از UUID است. هدف اصلی استفاده از UUID (Universally Unique Identifier) ایجاد یک شناسه جهانی منحصر به فرد، اما پیش بینی آن دشوار است. در نتیجه عملکرد یک الگوریتم خاص، یک کد 128 بیتی مخصوص آن محیط و آن لحظه برای شما ایجاد می شود. اما مهم ترین ویژگی این کد این است که هر بار که تولید می شود تفاوت فاحشی با کد قبلی دارد. در نتیجه، استفاده از UUID به عنوان مشخصکننده داده، پیشبینیپذیری را تقریباً غیرممکن میکند.
چگونه با لاراول UUID تولید کنیم؟چگونه با لاراول UUID تولید کنیم؟
لاراول با نسخه 5.6 روش های تولید UUID را به عنوان کمک کننده معرفی کرد.
// Standard UUID
Str::uuid()
// UUID سفارشی شده برای نمایه سازی بهینه شده است
Str::orderedUuid()
3 UUID مجزا که در عرض چند ثانیه با Laravel Tinker تولید می شوند:
>>> Str::uuid()->toString()
=> "016ff523-6b15-49a8-aa03-f74f51770d55"
>>> Str::uuid()->toString()
=> "fef06c81-1316-416d-b225-783d425a7e4f"
>>> Str::uuid()->toString()
=> "b6977b75-8cb6-415c-976e-c7bf87814561"
ایجاد فیلد UUID در جدول با Migration
لاراول روش هایی را برای ایجاد فیلدها در جداول معرفی کرده است که برای ذخیره سازی UUID مناسب هستند. بنابراین می توانیم به راحتی فیلد UUID را در فایل های Migration ایجاد کنیم که جداول را ایجاد یا ویرایش می کنند.
در زیر نمونه کد انتقال برای ایجاد یک جدول با فیلد UUID به عنوان کلید اصلی آمده است:
Schema::create('assets', function (Blueprint $table) {
$table->uuid('id')->primary();
$table->string('name');
$table->timestamps();
});
نتیجه:
به خصوص با گسترش فناوری های رایانش ابری، برخی از سرویس های وب شروع به ارائه خدمات به میلیون ها و حتی میلیاردها کاربر کردند. کدهای UUID که با هدف نامگذاری منحصر به فرد و غیرقابل پیشبینی منابع تولید شده از منابع مختلف تولید میشوند، به عنوان استاندارد صنعتی مورد استفاده قرار گرفتهاند. اگر به شما بگویم که مایکروسافت یکی از برجسته ترین کاربران این سیستم کدنویسی است، فکر می کنم تعجب نخواهید کرد. منابع در همه برنامه های ابری مانند Microsoft Azure، Microsoft 365، Dynamics 365 با UUID نامگذاری شده اند.
دیدگاه ها (0)