php - कोडइग्निटर के लिए मुझे प्रमाणीकरण लाइब्रेरी कैसे चुननी चाहिए?




codeigniter authentication (8)

अपडेट (14 मई, 2010):

यह पता चला है कि रूसी डेवलपर इल्या कोनीखोव ने इसे पढ़ने के बाद गौंटलेट उठाया और नीचे दी गई सिफारिशों और आवश्यकताओं के बाद डीएक्स औथ के आधार पर सीआई के लिए एक नई लेख पुस्तकालय बनाया।

और परिणामी टैंक औथ ओपी के सवाल के जवाब की तरह दिख रहा है। मैं यहां एक अंग पर बाहर जा रहा हूं और आज टैंक ऑथ को कोडइग्निटर के लिए सबसे अच्छी प्रमाणीकरण लाइब्रेरी कहता हूं। यह एक रॉक-ठोस लाइब्रेरी है जिसमें आपकी सभी सुविधाएं हैं और आप जो भी ब्लोट नहीं करते हैं:

टैंक ऑथ

पेशेवरों

  • पूर्ण विशेष रुप से प्रदर्शित
  • फीचर सेट पर विचार करने वाले दुबला पदचिह्न (20 फाइलें)
  • बहुत अच्छा दस्तावेज
  • सरल और सुरुचिपूर्ण डेटाबेस डिजाइन (केवल 4 डीबी टेबल)
  • अधिकांश सुविधाएं वैकल्पिक और आसानी से कॉन्फ़िगर की गई हैं
  • भाषा फ़ाइल समर्थन
  • reCAPTCHA समर्थित है
  • सीआई की सत्यापन प्रणाली में हुक
  • सक्रियण ईमेल
  • ईमेल, उपयोगकर्ता नाम या दोनों के साथ लॉगिन करें (कॉन्फ़िगर करने योग्य)
  • अप्रतिबंधित खाते ऑटो-समाप्त हो जाते हैं
  • सरल अभी तक प्रभावी त्रुटि हैंडलिंग
  • हैशिंग के लिए phpass का उपयोग करता है (और डीबी में autologin कोड भी हैश)
  • सुरक्षा प्रश्नों का उपयोग नहीं करता है
  • उपयोगकर्ता और प्रोफाइल डेटा का पृथक्करण बहुत अच्छा है
  • विफल लॉगिन प्रयासों के आसपास बहुत ही उचित सुरक्षा मॉडल (बॉट्स और डीओएस हमलों के खिलाफ अच्छी सुरक्षा)

(माइनर) विपक्ष

  • डीबी में खोए गए पासवर्ड कोड नहीं हैं
  • एक देशी (गरीब) कैप्चा शामिल है, जो उन लोगों के लिए अच्छा है जो (Google- स्वामित्व वाली) रीकैप्चा सेवा पर निर्भर नहीं होना चाहते हैं, लेकिन यह वास्तव में पर्याप्त सुरक्षित नहीं है
  • बहुत दुर्लभ ऑनलाइन दस्तावेज (यहां मामूली समस्या है, क्योंकि कोड अच्छी तरह से प्रलेखित और सहज है)

यहां टैंक ऑथ डाउनलोड करें

मूल उत्तर:

मैंने अपना खुद का भी कार्यान्वित किया है (वर्तमान में लगभग 80% काम के कुछ हफ्तों के बाद किया जाता है)। मैंने पहले सभी को आजमाया; फ्रीकथ लाइट, डीएक्स ऑथ, रेडक्स, सिंपलॉगिन, सरल लॉजिक सिक्योर, पीसी_सर, ताजा संचालित, और कुछ और। उनमें से कोई भी बराबर नहीं था, आईएमओ, या तो वे बुनियादी सुविधाओं की कमी थी, स्वाभाविक रूप से असुरक्षित, या मेरे स्वाद के लिए भी फूला हुआ था।

असल में, मैंने कोडइग्निटर के लिए सभी प्रमाणीकरण पुस्तकालयों का विस्तृत दौर किया जब मैं उनका परीक्षण कर रहा था (केवल नए साल के बाद)। एफडब्ल्यूआईडब्ल्यू, मैं इसे आपके साथ साझा करूंगा:

डीएक्स औथ

पेशेवरों

  • बहुत पूर्ण विशेष रुप से प्रदर्शित
  • मध्यम पदचिह्न (25+ फाइलें), लेकिन काफी पतला महसूस करने का प्रबंधन करता है
  • उत्कृष्ट दस्तावेज, हालांकि कुछ थोड़ा टूटा अंग्रेजी में है
  • भाषा फ़ाइल समर्थन
  • reCAPTCHA समर्थित है
  • सीआई की सत्यापन प्रणाली में हुक
  • सक्रियण ईमेल
  • अप्रतिबंधित खाते ऑटो-समाप्त हो जाते हैं
  • लवण के लिए grc.com suggests (पीआरएनजी के लिए बुरा नहीं)
  • संग्रहीत 'कारण' तारों के साथ प्रतिबंध
  • सरल अभी तक प्रभावी त्रुटि हैंडलिंग

विपक्ष

  • केवल उपयोगकर्ताओं को खोए गए पासवर्ड को रीसेट करने देता है (उन्हें पुनः सक्रियण पर एक नया चुनने की बजाय)
  • होमब्रू छद्म-घटना मॉडल - अच्छा इरादा, लेकिन निशान को याद करता है
  • उपयोगकर्ता तालिका में दो पासवर्ड फ़ील्ड, खराब शैली
  • दो अलग उपयोगकर्ता टेबल का उपयोग करता है (एक 'temp' उपयोगकर्ताओं के लिए - संदिग्ध और अनावश्यक)
  • संभावित असुरक्षित एमडी 5 हैशिंग का उपयोग करता है
  • विफल लॉगिन प्रयास केवल आईपी द्वारा संग्रहीत, उपयोगकर्ता नाम से नहीं - असुरक्षित!
  • Autologin कुंजी डेटाबेस में नहीं है - वास्तव में असुरक्षित के रूप में cleartext में पासवर्ड संग्रहीत करने के रूप में असुरक्षित!
  • रोल सिस्टम एक पूर्ण गड़बड़ है: is_admin हार्ड-कोडेड भूमिका नामों के साथ फ़ंक्शन है, is_role एक पूर्ण गड़बड़ है, check_uri_permissions एक गड़बड़ है, संपूर्ण अनुमति तालिका एक बुरा विचार है (एक यूआरआई असुरक्षित पृष्ठों को बदल और प्रस्तुत कर सकता है; अनुमतियां हमेशा ठीक से संग्रहीत की जानी चाहिए जहां संवेदनशील तर्क है)। सौदा तोड़ने वाला!
  • एक देशी (गरीब) कैप्चा शामिल है
  • reCAPTCHA समारोह इंटरफ़ेस गन्दा है

FreakAuth लाइट

पेशेवरों

  • बहुत पूर्ण विशेष रुप से प्रदर्शित
  • ज्यादातर काफी अच्छी तरह से प्रलेखित कोड
  • उपयोगकर्ता और प्रोफाइल डेटा का पृथक्करण एक अच्छा स्पर्श है
  • सीआई की सत्यापन प्रणाली में हुक
  • सक्रियण ईमेल
  • भाषा फ़ाइल समर्थन
  • सक्रिय रूप से विकसित

विपक्ष

  • थोड़ा फूला हुआ लगता है (50+ फाइलें)
  • और फिर भी इसमें स्वचालित कुकी लॉगिन की कमी है (!)
  • उपयोगकर्ता नाम और ईमेल दोनों के साथ लॉगिन का समर्थन नहीं करता है
  • यूटीएफ -8 अक्षरों के साथ समस्याएं प्रतीत होती हैं
  • बहुत से ऑटोलोडिंग की आवश्यकता है (प्रदर्शन में कमी)
  • खराब micromanaged कॉन्फ़िगरेशन फ़ाइल
  • भयानक व्यू-कंट्रोलर अलगाव, दृश्यों में बहुत सारे कार्यक्रम तर्क और नियंत्रकों में हार्ड-कोडित आउटपुट के साथ। सौदा तोड़ने वाला!
  • शामिल विचारों में गरीब HTML कोड
  • घटिया कैप्चा शामिल है
  • हर जगह डीबग echoes टिप्पणी की
  • एक विशिष्ट फ़ोल्डर संरचना मजबूर करता है
  • एक विशिष्ट अजाक्स पुस्तकालय को मजबूर करता है (स्विच किया जा सकता है, लेकिन पहले स्थान पर नहीं होना चाहिए)
  • लॉगिन प्रयासों पर कोई अधिकतम सीमा नहीं - बहुत असुरक्षित! सौदा तोड़ने वाला!
  • हाइजैक फॉर्म सत्यापन
  • संभावित असुरक्षित एमडी 5 हैशिंग का उपयोग करता है

pc_user

पेशेवरों

  • अच्छी सुविधा अपने छोटे पदचिह्न के लिए सेट है
  • लाइटवेट, नो ब्लोट (3 फाइलें)
  • सुरुचिपूर्ण स्वचालित कुकी लॉगिन
  • वैकल्पिक परीक्षण कार्यान्वयन के साथ आता है (अच्छा स्पर्श)

विपक्ष

  • पुराने सीआई डेटाबेस वाक्यविन्यास का उपयोग करता है (कम सुरक्षित)
  • सीआई की सत्यापन प्रणाली में हुक नहीं है
  • किंडा अनजान स्थिति (भूमिका) प्रणाली (सूचकांक उल्टा - अव्यवहारिक)
  • संभावित रूप से असुरक्षित sha1 हैशिंग का उपयोग करता है

ताजा संचालित

पेशेवरों

  • छोटे पदचिह्न (6 फाइलें)

विपक्ष

  • बहुत सारी आवश्यक सुविधाओं को कम करता है। सौदा तोड़ने वाला!
  • सबकुछ कठिन है। सौदा तोड़ने वाला!

रेडक्स / आयन ऑथ

कोडइग्निटर विकी के अनुसार, रेडक्स बंद कर दिया गया है, लेकिन आयन औथ कांटा मजबूत हो रहा है: https://github.com/benedmunds/CodeIgniter-Ion-Auth

आयन औथ एक अच्छी तरह से फीचर्ड लाइब्रेरी है जो अत्यधिक भारी या उन्नत के बिना है। ज्यादातर मामलों में इसका फीचर सेट एक परियोजना की आवश्यकताओं को पूरा करने से भी अधिक होगा।

पेशेवरों

  • कोडइग्निटर के साथ एकीकृत करने के लिए हल्के और सरल
  • लाइब्रेरी से सीधे ईमेल भेजने का समर्थन करता है
  • अच्छी तरह से ऑनलाइन दस्तावेज और अच्छे सक्रिय देव / उपयोगकर्ता समुदाय
  • एक परियोजना में लागू करने के लिए सरल

विपक्ष

  • कुछ अन्य लोगों की तुलना में अधिक जटिल डीबी स्कीमा
  • दस्तावेज़ीकरण में कुछ क्षेत्रों में विस्तार की कमी है

SimpleLoginSecure

पेशेवरों

  • छोटे पदचिह्न (4 फाइलें)
  • Minimalistic, बिल्कुल कोई bloat
  • हैशिंग (उत्कृष्ट) के लिए phpass का उपयोग करता है

विपक्ष

  • केवल लॉगिन, लॉगआउट, बनाएं और हटाएं
  • बहुत सारी आवश्यक सुविधाओं को कम करता है। सौदा तोड़ने वाला!
  • एक पुस्तकालय की तुलना में एक प्रारंभिक बिंदु के अधिक

मुझे गलत मत समझो: मेरा मतलब उपर्युक्त पुस्तकालयों में से किसी का अपमान करने का नहीं है; मैं उनके डेवलपर्स द्वारा पूरा किए गए कार्यों से कितना प्रभावित हूं और उनमें से प्रत्येक कितने दूर आ गया है, और मैं अपने स्वयं के कोड बनाने के लिए अपने कुछ कोड का पुन: उपयोग करने से ऊपर नहीं हूं। मैं जो कह रहा हूं, कभी-कभी इन परियोजनाओं में, फोकस आवश्यक 'जरूरत-से-गुफाओं' (जैसे कठोर सुरक्षा प्रथाओं) से नरम 'अच्छा-से-गुफाओं' तक बदल जाता है, और यही वह उपाय है जो मुझे उपाय करने की आशा करता है ।

इसलिए: मूल बातें वापस।

CodeIgniter के लिए प्रमाणीकरण सही किया

प्रमाणीकरण लाइब्रेरी से सुविधाओं की मेरी न्यूनतम आवश्यक सूची यहां दी गई है। यह मेरी अपनी लाइब्रेरी की फीचर सूची का उप-समूह भी होता है;)

  1. वैकल्पिक परीक्षण कार्यान्वयन के साथ छोटे पदचिह्न
  2. पूर्ण दस्तावेज
  3. कोई autoloading आवश्यक है। प्रदर्शन के लिए पुस्तकालयों की बस-समय-समय पर लोडिंग
  4. भाषा फ़ाइल समर्थन; कोई कठोर कोडित तार नहीं
  5. reCAPTCHA समर्थित लेकिन वैकल्पिक
  6. अनुशंसित सही यादृच्छिक नमक उत्पादन (उदाहरण के लिए random.org या random.irb.hr का उपयोग करना)
  7. तृतीय पक्ष लॉगिन (ओपनआईडी, फेसबुक कनेक्ट, Google खाता इत्यादि) का समर्थन करने के लिए वैकल्पिक ऐड-ऑन
  8. उपयोगकर्ता नाम या ईमेल का उपयोग कर लॉगिन करें
  9. उपयोगकर्ता और प्रोफाइल डेटा का पृथक्करण
  10. सक्रियण और खोए गए पासवर्ड के लिए ईमेल
  11. स्वचालित कुकी लॉगिन सुविधा
  12. हैशिंग के लिए कॉन्फ़िगर करने योग्य phpass (बिल्कुल सही ढंग से नमकीन!)
  13. पासवर्ड का हैशिंग
  14. Autologin कोड की हैशिंग
  15. खोए गए पासवर्ड कोडों का हैशिंग
  16. सीआई की सत्यापन प्रणाली में हुक
  17. कोई सुरक्षा प्रश्न नहीं!
  18. वैकल्पिक क्लाइंट-साइड (जावास्क्रिप्ट) सत्यापनकर्ता के साथ लागू मजबूत पासवर्ड नीति सर्वर-पक्ष
  19. डिक्शनरी और डीओएस हमलों दोनों के खिलाफ सर्वश्रेष्ठ अभ्यास प्रतिद्वंद्वियों के साथ असफल लॉगिन प्रयासों की लागू अधिकतम संख्या!
  20. तैयार (बाध्य) बयान के माध्यम से सभी डेटाबेस का उपयोग किया!

नोट: उन अंतिम कुछ बिंदु सुपर-हाई-सुरक्षा ओवरकिल नहीं हैं जिन्हें आपको अपने वेब एप्लिकेशन की आवश्यकता नहीं है। यदि एक प्रमाणीकरण पुस्तकालय इन सुरक्षा मानकों को 100% पूरा नहीं करता है, तो इसका उपयोग न करें!

गैर-जिम्मेदार कोडर्स के हालिया उच्च प्रोफ़ाइल उदाहरण जिन्होंने उन्हें अपने सॉफ़्टवेयर से बाहर छोड़ा: # 17 यह है कि राष्ट्रपति अभियान के दौरान सारा पॉलिन के एओएल ईमेल को कैसे हैक किया गया था; # 18 और # 1 का एक बुरा संयोजन हाल ही में अपराधी थे जब ट्विटर ब्रिटनी स्पीयर्स, बराक ओबामा, फॉक्स न्यूज और अन्य के खातों को हैक किया गया था; और # 20 अकेले यह है कि चीनी हैकर 2008 में एक स्वचालित हैक में 70,000 से अधिक कोरियाई वेबसाइटों से व्यक्तिगत जानकारी के 9 मिलियन आइटम चोरी करने में कामयाब रहे।

ये हमले मस्तिष्क सर्जरी नहीं हैं। यदि आप अपने पीछे के दरवाजे को खुले खुले छोड़ देते हैं, तो आपको आगे बोल्ट करके सुरक्षा की झूठी भावना में खुद को भ्रमित नहीं करना चाहिए। इसके अलावा, यदि आप कोडइग्निटर जैसे सर्वोत्तम अभ्यास प्रथाओं को चुनने के लिए कोडिंग के बारे में काफी गंभीर हैं, तो कम से कम सबसे बुनियादी सुरक्षा उपायों को सही तरीके से प्राप्त करने के लिए आप अपने आप को देनदार हैं।

<शेख़ी>

असल में, यह है कि यह कैसे है: मुझे कोई परवाह नहीं है कि कोई लेख पुस्तकालय सुविधाओं का एक समूह, उन्नत भूमिका प्रबंधन, PHP4 संगतता, सुंदर कैप्चा फ़ॉन्ट्स, देश सारणी, पूर्ण व्यवस्थापक पैनल, घंटी और सीटी प्रदान करता है - यदि लाइब्रेरी वास्तव में बनाता है मेरी साइट कम प्रथाओं का पालन न करके कम सुरक्षित है। यह एक प्रमाणीकरण पैकेज है; इसे एक चीज़ सही करने की जरूरत है: प्रमाणीकरण। अगर ऐसा करने में असफल रहता है , तो यह वास्तव में अच्छे से ज्यादा नुकसान कर रहा है।

</ शेख़ी>

/ जेन्स रोलैंड

मुझे लगता है कि कुछ हैं । कौन से बनाए रखा और उपयोग करने में आसान है? उनके पेशेवर और विपक्ष क्या हैं?


Ion_Auth मुख्य रूप से दो कारणों, उपयोगकर्ता भूमिकाओं और दस्तावेज़ीकरण के लिए tank_auth को धड़कता है, ये दोनों tank_auth से गायब हैं।


टैंक ऑथ अच्छा दिखता है लेकिन प्रलेखन केवल एक पृष्ठ का स्पष्टीकरण है कि कैसे इंस्टॉल किया जाए, साथ ही प्रत्येक PHP फ़ाइल का त्वरित रन-डाउन। कम से कम यह सब मुझे गुगलिंग के बाद मिला है। हो सकता है कि लोगों का क्या मतलब है जब वे कहते हैं कि टैंक ऑथ अच्छी तरह से प्रलेखित है कि कोड अच्छी तरह से टिप्पणी की गई है। यह एक अच्छी बात है, लेकिन दस्तावेज़ीकरण से अलग है। आपके मौजूदा कोड के साथ टैंक ऑथ की सुविधाओं को एकीकृत करने के तरीके के बारे में कुछ दस्तावेज होना अच्छा लगेगा।


ध्यान दें कि जेन्स रोलैंड द्वारा "व्यापक लिस्टिंग" में उपयोगकर्ता भूमिका शामिल नहीं है। यदि आप अलग-अलग उपयोगकर्ता भूमिकाओं (जैसे व्यवस्थापक / उपयोगकर्ता या व्यवस्थापक / संपादक / उपयोगकर्ता) को निर्दिष्ट करने में रुचि रखते हैं, तो ये पुस्तकालय इसे अनुमति देते हैं:

  • Ion_Auth (Redux के पुनर्लेखन)
  • Redux
  • बैकएंड प्रो

Tank_Auth (जेन्स की सूची में ऊपर # 1) में उपयोगकर्ता भूमिकाएं नहीं हैं। मुझे एहसास है कि यह प्रमाणीकरण का बिल्कुल हिस्सा नहीं है, लेकिन तब से

  • प्रमाणीकरण और भूमिका प्रबंधन दोनों पृष्ठ लोड पर संभाले जाते हैं
  • दोनों में सुरक्षा शामिल है
  • दोनों के लिए एक ही टेबल / मॉडल का उपयोग किया जा सकता है।
  • दोनों नियंत्रक कन्स्ट्रक्टर (या यहां तक ​​कि ऑटोलोड) में लोड करने के लिए सेट अप किया जा सकता है

यदि आपको इसकी ज़रूरत है, तो यह दोनों पुस्तकालयों को संभालने के लिए बहुत सारी समझ में आता है। मैं इस वजह से Tank_Auth से Ion_Auth पर स्विच कर रहा हूं।


मैं Ion_Auth कोशिश कर रहा हूँ और इसकी सराहना करता हूं, बीटीडब्ल्यू ...

SimpleLoginSecure प्रमाणीकरण सरल और सुरक्षित बनाता है।


मैं फ्लेक्सी औथ ( http://haseydesign.com/flexi-auth/ ) में आया हूं। यह बहुत ही आशाजनक लग रहा है, और मैंने इसका उपयोग करना शुरू कर दिया है। इसमें आश्चर्यजनक विशेषताएं हैं। सीआई के साथ पूरी तरह से एकीकृत करता है, और दो अलग-अलग लाइब्रेरी फाइलों के साथ आता है, जिसमें सभी कार्यों के साथ बहुत भारी भार होता है और दूसरे में केवल सत्यापन होते हैं।

सबसे अच्छा यह है कि नए पंजीकृत सदस्य को साइट पर दिए गए समय के लिए अस्थायी पहुंच मिलती है, जब तक कि वे अपने ईमेल से लिंक पर क्लिक न करें और सक्रिय न हों।


हो सकता है कि आप रेडक्स को अपनी ज़रूरतों को पूरा कर लेंगे। यह कोई ओवरकिल नहीं है और केवल बेयर फीचर्स के साथ पैक किया जाता है जिसमें से अधिकांश की आवश्यकता होगी। देव और योगदानकर्ता बहुत सख्त थे कि किस कोड का योगदान किया गया था।

यह आधिकारिक पृष्ठ है


BackendPro पर भी एक नज़र BackendPro

आखिरकार आप शायद कुछ कस्टम लिखना समाप्त कर देंगे, लेकिन डीएक्स औथ, फ्रीक ऑथ, बैकएंडप्रो इत्यादि से उधार लेने की अवधारणाओं में कुछ भी गलत नहीं है।

पैकेज किए गए ऐप्स के साथ मेरे अनुभव यह है कि वे कुछ संरचनाओं के लिए विशिष्ट हैं और मुझे हैक की आवश्यकता के बिना उन्हें अपने स्वयं के अनुप्रयोगों में एकीकृत करने में समस्याएं आई हैं, फिर यदि प्री-पैकेज में कोई अपडेट है, तो मुझे उन्हें माइग्रेट करना होगा।

मैं अपने सीआई कोड में Smarty और ADOdb का भी उपयोग करता हूं, इसलिए कोई फर्क नहीं पड़ता कि मैं हमेशा बड़े कोड में परिवर्तन करने के लिए क्या करूँगा।





authentication