أفضل طريقة لمنع طلبات تسجيل الدخول المتكررة دون قاعدة البيانات؟

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

  •  05-07-2019
  •  | 
  •  

سؤال

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

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

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

المحلول

وتحقق هذه الإجابة عن الخنق لهم.
تسجيل الدخول

وجيف اتوود له بلوق وظيفة مثيرة للاهتمام حول هذا الموضوع في حال كنت غريبة.
http://www.codinghorror.com/blog/archives/001206.html

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

نصائح أخرى

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

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

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

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

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