هل هناك أي خطر على إنشاء UUID في جانب عميل جافا سكريبت؟

StackOverflow https://stackoverflow.com/questions/1296234

  •  18-09-2019
  •  | 
  •  

سؤال

أحتاج إلى إنشاء UUID لتخزين في نهاية المطاف في قاعدة البيانات. هل يمكنني توليد أطروحات UIID من جافا سكريبت على متصفح العميل (هناك بعض الأمثلة هنا)?

هل هناك أي مخاطر أمنية للقيام بذلك بهذه الطريقة؟ أنا أفهم أن أي شخص يمكنه تعديل UUID قبل أن يتم تمريره إلى الخادم لتخزينها. لذلك سأحتاج إلى التحقق مما إذا كانت فريدة من نوعها TruLly قبل تخزينها في قاعدة البيانات، ولكن بخلاف ذلك، هل هناك أي أشياء أخرى تسحبها؟

(آسف لغتي الإنجليزية، لا تتردد في تصحيح أي أخطاء قواعد اللغة)

تعديل: للإجابة على الأسئلة حول لماذا أريد القيام بذلك، لأنني أستطيع إنشاء كائن جديد ومعرفه في JavaScript وإضافته إلى وجهة نظري ثم قم بإجراء مكالمة AJAX إلى الخادم لإضافته إلى قاعدة البيانات. بهذه الطريقة، لا أحتاج إلى تحميلها من قاعدة البيانات لمعرفة ما هو معرف أساسي.

هل كانت مفيدة؟

المحلول

ليس صحيحا. طالما أنه معرف بسيط ولا شيء أكثر، وأنت بالفعل التحقق من ذلك من أجل الصلاحية والتفرد، فإنه لا يختلف عن حسابات المستخدمين وجود معرف في عنوان URL، على سبيل المثال.

إلقاء نظرة على شريط URL الخاص بك. أراهن 1296234 هو المفتاح الرئيسي لهذا السؤال، لكنني لا أستطيع فعل أي شيء بهذه المعلومات. نفس الصفقة مع البرنامج النصي الخاص بك.

نصائح أخرى

ما هي الفائدة التي تراها في توليد هذا الجانب العميل؟ في كل الصدق، الخيار الأفضل هو إنشاء جانب خادم تكنولوجيا المعلومات، من الوصول إلى المستخدمين. قد لا يعطيك من أي مشاكل أمنية خطيرة، لكنه سيتم قطع التحقق من صحة زائدة عن الحاجة.

نعم. المخاطرة غير محددة ل UUID، أي معرف يتم إنشاؤه جانب العميل لديه بعض المخاطر، اعتمادا على ما تفعله مع المعرف. المشكلة هي أنه من الصعب جدا مصادقة JavaScript. إذا كنت تقبل المعرف الناتج عن العميل، فإنك تقبل أي معرفات من المتسللين.

قد تشمل المخاطر،

  1. جلسة تسرق. إذا كنت تستخدم المعرف لتحديد الجلسة، فقد يستخدم شخص ما معرفا موجودا كمعرف تم إنشاؤه وقد يعالجه الخادم كجلسة حالية إذا كانت الرعاية المناسبة لا تأخذ.

  2. مفاتيح مكررة. UUID الحقيقي هو عشوائي ولكن شخص ما يمكن أن يولد مفاتيح مكررة ستعفن قاعدة البيانات الخاصة بك.

قد تجد طرقا للدفاع ضد كل هذين من هذه الهجمات ولكن هذه حماية سلبية. قد يهزم الغرض الأصلي من إنشاء معرفات على العميل، وهو بسيط.

هل هناك بعض الأسباب لا يمكنك الحصول على قاعدة البيانات (زيادة) معرف؟

إذا قلت، فكم تقول، عليك التحقق من تفرد القيمة قبل تقديمها على أي حال، فلماذا لا تملك فقط أي لغة خلفية تستخدمها. من شأنها أن تجعلها أكثر مبهمة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top