سؤال

هنا الوضع قليلا مختلفة من قاعدة بيانات أخرى/كلمة المرور على الأسئلة StackOverflow.com

لقد حصلت على اثنين من مجموعات من المستخدمين.واحدة هي "الأولية" المستخدمين.والبعض الآخر "الثانوية" المستخدمين.كل واحد لديه تسجيل الدخول/كلمة المرور إلى الموقع الخاص بي (أقول mysite.com - هذا ليس مهم).

الخلفية:الابتدائية المستخدمين من الوصول إلى الموقع الثالث (أقول www.something.com/PrimaryUser1).كل المستخدم الثانوي "ينتمي" المستخدم الأساسي ويريد الوصول إلى الجزء الفرعي من هذا الموقع (أقول www.something.com/PrimaryUser1/SecondaryUser1).

في mysite.com الرئيسية للمستخدمين بتوفير بيانات الاعتماد الخاصة بهم التي يستخدمونها للوصول إلى www.something.com/PrimaryUser1 وهم تحديد "الفقرات" الثانوية المستخدمين من اختيار الحصول على حق الوصول إلى.

Mysite.com تساعد على إدارة الفرعية وصول المستخدمين الثانوي إلى الابتدائي المستخدم من الموقع.الثانوية المستخدمين لا يمكن "رؤية" الأساسي المستخدم كلمة المرور, ولكن من خلال موقعي ، يتمكنوا من الوصول إلى "الفقرات" من موقع آخر - ولكن فقط إلى تقييد الفرعي.

في طريقة فجة انا تنفيذ أوث (أو شيء من هذا القبيل).

السؤال هنا هو كيف يجب أن يكون تخزين الأولية اعتماد المستخدم إلى موقع آخر?النقطة الرئيسية هنا هي أن mysite.com يستخدم بيانات الاعتماد هذه إلى توفير الوصول إلى الثانوية المستخدمين ، لذلك يجب أن تكون قادرا على قراءتها.ومع ذلك أريد أن متجر في مثل هذه الطريقة التي الأولية المستخدمين طمأن أنني (كما صاحب الموقع) لا يمكن قراءة بيانات الاعتماد الخاصة بهم.

أعتقد أن هذا هو أكثر من النهج النظري السؤال.هل هناك أي شيء في عالم التشفير التي يمكن أن تساعد لي مع هذا ؟


إضافة النص:

منذ أكثر ppl مفقودة تماما السؤال هنا هو محاولة #2 في شرح ذلك.

PrimaryUser1 لديه اسم المستخدم/كلمة المرور www.something.com/PrimaryUser1Site

كان يرغب في إعطاء الفرعية الوصول إلى شخصين - SecondaryUser1 و SecondaryUser2 إلى المجلدات - www.something.com/PrimaryUser1Site/SecondaryUser1 و www.something.com/PrimaryUser1Site/SecondaryUser2

Mysite.com يعتني هذا الفرعية وإدارة المستخدم, لذلك PrimaryUser1 يذهب هناك و يقدم أوراق اعتماده إلى Mysite.com.MySite.com يستخدم داخليا وثائق التفويض المقدمة من PrimaryUser1 لإعطاء subusers محدود.الآن SecondaryUser1 و SecondaryUser2 يمكن الوصول إلى المجلدات الخاصة بها على www.something.com/PrimaryUser1Site من خلال MySite.com

الآن السؤال الذي يطرح نفسه, كيف يمكنني تخزين بيانات الاعتماد التي PrimaryUser1 له ؟

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

المحلول

وهذا يعتمد على نوع من المصادقة موقع الأساسي وموقع الثانوي الاتفاق على. هو مصادقة النماذج، HTTP الأساسية أو HTTP دايجست؟ إذا كان أشكال أو الأساسية ثم لديك أي خيار، ل<م> يجب تخزين كلمة المرور، لذلك خيارك الوحيد هو تشفيرها. لا يمكنك تخزين تجزئة كلمة المرور كما يجب تقديم نص واضح أثناء المصادقة على حد سواء الأشكال وHTTP الأساسية. المشاكل التي تنشأ من تخزين كلمة المرور المشفرة ومن المقرر أن أي استعمال غير صحيح الترميز (أي التي لا تستخدم IV أو الملح أو كنت لا تستخدم بشكل صحيح والشفرات تيار)، ولكن الأهم من ذلك سيكون لديك الإدارية الرئيسية مشاكل (حيث لتخزين المفتاح المستخدم لتشفير كلمات المرور وكيفية الوصول إليها من الخدمة غير تفاعلية / شيطان).

وإذا كان الموقع 3rd الطرف يقبل HTTP دايجست ثم كنت في أفضل حظا، يمكنك تخزين HA1 تجزئة جزء من تجزئة دايجست (أي MD5 من username:realm:password) لأنه يمكنك بناء دايجست استجابة بدءا مباشرة من HA1.

وأنا لم يتناول كيفية توفير المستخدم أوراق الثانوية (أي كيف تحصل على اسم المستخدم الثانوي الموقع وكلمة المرور ن المقام الأول)، وأفترض كنت قد حصلت على قناة المحمية (أي. HTTPS من العميل إلى الموقع الأساسي الخاص بك ).

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

نصائح أخرى

والقاعدة الأولى: أبدا، من أي وقت مضى تخزين كلمات السر! القاعدة الثانية: حساب تجزئة على كلمة المرور، مع الملح الإضافي، وتخزينها في قاعدة البيانات هذه. القاعدة الثالثة: اسم مستخدم (uppercased) يمكن أن تستخدم الملح، ولكن يفضل إضافة أكثر من ذلك بقليل على شكل ملح! (بعض النص الإضافي، ويفضل شيء طويلة). القاعدة الرابعة: لا يهم كيفية تأمين خوارزمية التجزئة هي، فإنها سوف تكون جميع اخترق عاجلا أو آجلا. كل ما يتطلبه الأمر هو الوقت! الحكم الخامس: أمن موقعك يعتمد على قيمة ما وراء ذلك. لمزيد من قيمة المحتوى لديها، وعلى الأرجح أن عليك أن تكون هاجمت! حكم السادسة: سوف تكتشف، عاجلا أو آجلا، أن موقعك اختراق ولكن ليس من خلال كلمة مرور اختراق، ولكن من خلال ثغرة في مكان آخر في التعليمات البرمجية. وتتوقع الخطر الأكبر موقعك آمن الآن كنت قد نفذت بعض أمني قوي. حكم السابعة: يمكن تقسيم جميع الأمن وجميع المواقع يمكن الحصول على اختراق، يمكن اكتشاف كل ما تبذلونه من الأسرار، وإذا كان الناس فقط هم على استعداد لاستثمار ما يكفي من الوقت للقيام بذلك

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

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

و: ثمانية القاعدة: دائما استخدام HTTPS! انها ليست آمنة مثل معظم الناس شيء إلا أنها لا تعطي الشعور بالأمان للمستخدمين!


منذ الانتهاء من إضافة نص، سأضيف المزيد من الإجابة.

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

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

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

وانهم على حد سواء للمستخدمين فقط، واحدة مع حقوق أكثر من الآخر.

هل فكرت في قبول رض مثل كومة تجاوز يفعل؟ وبهذه الطريقة ليست مسؤولة عن تخزين كلمات السر على الإطلاق.

وهناك طريقة واحدة فقط للقيام بذلك، وربما يكون أيضا burdomesome للمستخدمين.

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

وفي اي من الاتجاهين، هل يمكن أن حزمة دائما شم البلاغ إلى / من الملقم بحيث ما زال معظمها بلا جدوى.

لقد حصل هناك أن يكون أفضل طريقة لشرح هذا: (

ولكن إذا كنت تريد فقط أن أعرف كيفية تخزين كلمات السر بأمان قيام بذلك:

واسم المستخدم: جون، كلمة المرور: تمرير

ومفتاح = '!! @ ijs09789 ** & *؛

وMD5 (username.password.key)؛

وعندما اتصال تحقق فقط لمعرفة ما إذا MD5 (username.password.key) = يساوي واحد في ديسيبل - يمكنك أيضا استخدام SHA1 وأو أي أسلوب التشفير الآخرين

http://us.php.net/md5 و<لأ href = "HTTP: //us.php.net/sha1 "يختلط =" نوفولو noreferrer "> http://us.php.net/sha1

أبدا تخزين كلمات المرور في قاعدة البيانات ولكن تخزين وتجزئته الإصدار من كل كلمة.

تحقق من هذا المادة إذا كان هذا هو الصيني بالنسبة لك.

إذا كنت ترغب في تخزين كلمة المرور نفسك أفضل apporach هو استخدام واحدة-طريقة خوارزمية التجزئة مثل MD5 أو SHA-1.وميزة هذا النهج هو أن لك لا يمكن اشتقاق كلمة المرور من تجزئته القيمة.

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

تحرير

الثانوية المستخدمين يجب أن يكون بهم passowrds.لماذا لا يفعلون ذلك ؟

أنت مما يجعلها معقدة للغاية. تحتاج إلى التوقف عن محاولة لخلط التوثيق والترخيص.

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

وبعد ذلك عندما يريد المستخدم الثانوي للتوجه إلى أي موقع في المزارع الخاصة بك، ومصادقة أنفسهم فقط كما أنفسهم - أنها لم انتحال صفة مستخدم الأساسي! ولديهم حقوق الوحيد الذي منح لهم عندما أعطى المستخدمين الأولية لهم وضع "الثانوي".

-

وOK، منذ كنت اطلاق النار الذي حل عليها في التعليق، والنظر في هذا:

أولا، أشك في أي شيء تكون آمنة حقا. يمكنك استرداد دائما سرا إذا كنت مراقبة نشاط المستخدمين.

والآن، وهذا هو تماما قبالة الكفة، وأنا لم cryptanalyzed ذلك، ولكن تحقق في ما يسمى <لأ href = "http://en.wikipedia.org/wiki/Secret_sharing" يختلط = "نوفولو noreferrer "> سري مخطط تقاسم . تخزين "فعالة" أو "الحقيقية" الموقع الرئيسي المستخدم كلمة السر الأساسي كما السر المشترك. استخدام التجزئة المملحة كلمة السر التي قدمها المستخدم الأساسي على أنها سرية واحدة. استخدام التجزئة المملحة كلمة السر التي قدمها المستخدم الأول الثانوي أنها سرية أخرى، وهلم جرا لكل مستخدم الثانوي إضافية. لا تقم بتخزين التجزئة المملحة! مجرد تخزين الملح والسر المشترك المحمية.

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

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