ما هو UUID؟ ولماذا يُستخدم بدلًا من ID العادي؟
الـ UUID هو اختصار لـ Universally Unique Identifier، ويُستخدم لتوليد مُعرّفات فريدة تُستعمل غالبًا بدلًا من الـ ID العادي في قواعد البيانات، خاصة عند استرجاع البيانات عبر طلبات الـ GET يعني في ال retrieving.
مثال:
لدينا جدول في قاعدة البيانات يحتوي على الأعمدة التالية:
posts (id, title, body, created_at, updated_at)
عند استرجاع مقال معين، نرسل عادة طلب GET بالشكل التالي:
site.name/posts/1
هذا يعني أننا نطلب المقال الذي يحمل الـ ID = 1.
هنا قد تتساءل: ما الحاجة لاستخدام UUID؟
السبب الرئيسي لاستخدام UUID هو زيادة الحماية وصعوبة التنبؤ بهوية ال records فقط.
عند استخدام أرقام تسلسلية كـ ID (1، 2، 3...)، يمكن للمهاجم بسهولة تخمين عناوين موارد أخرى (مثلاً: /posts/2، /posts/3...). اذا لم تكن متاحة.. وهذا يُسهل بعض أنواع الهجمات مثل:
- الهندسة الاجتماعية (Social Engineering): كثيرًا ما يكون المستخدم صاحب ID = 1 هو ال admin، وبالتالي يكون هدفًا واضحًا... وهكذا.
- استكشاف غير مصرح به (Unauthorized Enumeration): يستطيع المهاجم استعراض محتوى الموقع أو واجهة API فقط بتغيير الرقم.
لكن عند استخدام UUID، يصبح الرابط على الشكل:
site.name/posts/6f8a9e2c-1d4e-41a2-bb0e-5f2ef3fc29f1
هذا يُصعّب جدًا عملية التخمين أو التلاعب، مما يعزز الأمان العام للموقع او التطبيق.
ملاحظات مهمة:
- ال UUID لا يُعتبر "تشفيرًا"، بل هو معرف غير قابل للتخمين، فقط.
- رغم فوائده الأمنية، ال UUID أكبر حجمًا من الأرقام العادية وقد يكون أبطأ من حيث ال indexing (يمكننا اننتحدث عن هذا مستقبلا ان شاء الله).
- استخدام UUID مفيد خاصة في الـ APIs المفتوحة أو الأنظمة التي تتطلب حماية لهوية ال recourses.
اذا استفدت شارك الموضوع مع معارفك!
>>Click here to continue<<