मैं अपने जावा वेब एप्लिकेशन में लॉगिन प्रयासों को थ्रॉटल करने के लिए एक कुशल तंत्र को कार्यान्वित करना चाहता हूं, ताकि उपयोगकर्ता खातों पर ब्रूट-फोर्स हमलों को रोका जा सके। कि वास्तव में मुझे मदद नहीं करता है के साथ के रूप में मैं memcached और न ही Django का उपयोग नहीं कर सकते हैं:जावा वेबपैप में लॉगिन प्रयासों को कैसे थ्रॉटल करें?
Jeff explained the why, but not the how.
सिमोन विललिसन एक implementation in Python for Django दिखाया।
स्क्रैच से अपने विचारों को पोर्ट करना बहुत अच्छा प्रतीत नहीं होता है - मैं पहिया को फिर से शुरू नहीं करना चाहता हूं।
मुझे एक Java implementation मिला, हालांकि यह अपेक्षाकृत नाइव है: एलआरयू कैश के बजाय, यह केवल 15 मिनट के बाद सभी प्रविष्टियों को साफ़ करता है।
ईएचसीएच memcached के लिए एक विकल्प हो सकता है, लेकिन मुझे इसके साथ कोई अनुभव नहीं है और वास्तव में एक और तकनीक का निर्माण नहीं करना चाहते हैं यदि इस कार्य के लिए बेहतर विकल्प हैं।
तो, जावा में लॉगिन थ्रॉटलिंग को लागू करने का एक अच्छा तरीका क्या है?
हालांकि कोई भी लॉगिन उपयोगकर्ता अनुभव को मार सकता है। – Loki
यूनिक्स दुनिया में कोई भी असफल लॉगिन मानक है, लेकिन वेब ऐप भाग का तात्पर्य है कि एक हमलावर इसे कई धागे में कर सकता है, इसलिए एक साधारण टाइमआउट नहीं करता है, आपको कहीं भी लॉगिन प्रयास को स्टोर करना होगा और इसे एक्सेस करने और सत्यापित करने के लिए कुछ कोड बनाना होगा। – Loki
बस सभी प्रयासों में देरी किसी को समानांतर में 50 अनुरोध चलाने से नहीं रोकती है। यही कारण है कि क्यों साइमन विलिसन आईपी एड्रेस को कैश में टाइमस्टैंप के साथ स्टोर करता है। –