سؤال

وأنا تطوير تطبيق ASP صافي MVC. واحدة من أعمالي يتطلب id كمعلمة. على سبيل المثال:

public actionresult Detail(Guid id){
    return View();
}

وكما ترون، أنا باستخدام Guid بدلا من Int. المسألة هي أكثر التجميل. عنوان الموقع يمكن أن تكون طويلة جدا، مثل localhost/Detail/0c157b42-379d-41d5-b9ba-83e9df9985b2.

هل هي آمنة لاتخاذ أجزاء فقط من Guid مثل localhost/Detail/0c157b42؟

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

المحلول

تم تصميم GUID في مثل هذه الطريقة التي يراد لها أن تكون فريدة من نوعها، ولكن أي جزء منه ليست كذلك. انظر هذا بلوق وظيفة للحصول على مزيد من التفاصيل. إذا كنت بحاجة إلى تقصير GUID اتخاذ تجزئة جيدة منه - مثل SHA-1 أو (إذا لم يكن لديك مخاوف أمنية) MD5

نصائح أخرى

لا، انها ليست آمنة.

ويمكنك حساب تجزئة SHA-2 من أنه رغم ذلك، واتخاذ الأحرف القليلة الأولى من ذلك.

لا، كنت في حاجة إلى GUID بأكمله لأنه ليس هناك احتمال أن مجموعة فرعية قد لا تكون فريدة من نوعها.

وعلى سبيل المثال:

<اقتباس فقرة>   

و0c157b42-379d-41d5-b9ba-83e9df9985b2

     

و0c157b42-379d-41d5-b9ba-83e9df9985b3

وإشعار، إلا أن الرقم الأخير هو مختلف. بدايات كلاهما نفس الشيء. لا يمكنك استخدام نهاية زائدة من GUID إما لأن هناك توجد طريقة للتنبؤ أي جزء من GUID سيتغير في حين ان بإنشائه.

وبعض الخيارات الأخرى لconsider- * إذا كان هناك أكثر من واحد التفاصيل مع المعرفات الفريدة العمومية بدءا 0c157b42، لديها URL مضيف محلي / التفاصيل / 0c157b42 تظهر قائمة الكائنات تفاصيل المعمول بها. * URL التعرج - يسمح لحقل "URL ودية" على كائن تفاصيل

ويمكنك تنظيف GUID من -s وتحويل HEX إلى Base32 (A-Z، 0-5) والذي سيختصر إلى 16 حرفا.

وبت من الاستجابة المتأخرة ولكن في حالة أي شخص يقرأ هذا ...

واعتمادا على الاستخدام، يمكنك توفير قيمة GUID تقصير.

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

وهذه التقنية هي أيضا من المستحسن إذا كنت تقليم قيمة تجزئة GUID جدا .. فقط لتكون آمنة. في الواقع أي وقت أن تولد عشوائيا قيمة لاستخدامها ID ثم يجب عليك التأكد من أنها ليست "بالفعل في استخدام '

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