คำตอบ:
ปรากฎว่าผู้พัฒนารัสเซีย Ilya Konyukhov หยิบถุงมือหลังจากอ่านและสร้างห้องสมุดรับรองความถูกต้องใหม่สำหรับ CI ตาม DX Auth ตามคำแนะนำและข้อกำหนดด้านล่าง
และผลลัพธ์ของTank Authดูเหมือนจะเป็นคำตอบสำหรับคำถามของ OP ฉันจะออกไปข้างนอกที่นี่แล้วโทรไปที่ Tank Auth ซึ่งเป็นไลบรารี่ที่ดีที่สุดสำหรับ CodeIgniter มันเป็นห้องสมุดที่เต็มไปด้วยหินซึ่งมีคุณสมบัติทั้งหมดที่คุณต้องการและไม่มีสิ่งใดที่คุณไม่ชอบ:
ข้อดี
- คุณสมบัติเต็มรูปแบบ
- รอยเท้าแบบ Lean (20 ไฟล์) พิจารณาชุดคุณลักษณะ
- เอกสารที่ดีมาก
- การออกแบบฐานข้อมูลที่เรียบง่ายและสง่างาม (เพียง 4 ตารางฐานข้อมูล)
- คุณสมบัติส่วนใหญ่เป็นทางเลือกและกำหนดค่าได้ง่าย
- รองรับไฟล์ภาษา
- รองรับ reCAPTCHA
- ติดตั้งเข้ากับระบบตรวจสอบความถูกต้องของ CI
- เปิดใช้งานอีเมล
- เข้าสู่ระบบด้วยอีเมลชื่อผู้ใช้หรือทั้งสองอย่าง (กำหนดค่าได้)
- บัญชีที่ไม่ได้ใช้งานจะหมดอายุโดยอัตโนมัติ
- การจัดการข้อผิดพลาดที่เรียบง่ายและมีประสิทธิภาพ
- ใช้ phpass สำหรับการแฮช (และยังแฮชโค้ด autologin ในฐานข้อมูล)
- ไม่ใช้คำถามเพื่อความปลอดภัย
- การแยกข้อมูลผู้ใช้และโปรไฟล์เป็นสิ่งที่ดีมาก
- โมเดลการรักษาความปลอดภัยที่สมเหตุสมผลมากรอบความพยายามในการล็อกอินล้มเหลว (การป้องกันที่ดีต่อบ็อตและการโจมตี DoS)
(เล็กน้อย)
- รหัสผ่านที่หายไปจะไม่ถูกแฮชใน DB
- รวม CAPTCHA แบบเนทีฟ (แย่) ซึ่งดีสำหรับผู้ที่ไม่ต้องการพึ่งพาบริการ reCAPTCHA (เป็นเจ้าของโดย Google) แต่จริงๆแล้วมันไม่ปลอดภัยพอ
- เอกสารออนไลน์ที่กระจัดกระจายมาก (มีปัญหาเล็กน้อยที่นี่เนื่องจากรหัสมีการบันทึกไว้เป็นอย่างดีและใช้งานง่าย)
คำตอบเดิม:
ฉันได้ใช้งานของฉันเองเช่นกัน (ปัจจุบันทำไปประมาณ 80% หลังจากทำงานสองสามสัปดาห์) ฉันลองทั้งหมดก่อนอื่น Light FreakAuth, DX Auth, Redux, SimpleLogin, SimpleLoginSecure, pc_user, Fresh Powered และอีกมากมาย ไม่มีของพวกเขาถึงเสมอ IMO ทั้งที่พวกเขาขาดคุณสมบัติพื้นฐานไม่แน่ใจโดยธรรมชาติหรือป่องเกินไปสำหรับรสนิยมของฉัน
ที่จริงแล้วฉันได้ทำการปัดเศษรายละเอียดของไลบรารีการพิสูจน์ตัวตนทั้งหมดสำหรับ CodeIgniter เมื่อฉันทำการทดสอบพวกเขา (หลังปีใหม่) FWIW ฉันจะแบ่งปันกับคุณ:
ข้อดี
- โดดเด่นมากเต็มรูปแบบ
- การปล่อยขนาดกลาง (25 ไฟล์ขึ้นไป) แต่จะรู้สึกค่อนข้างบาง
- เอกสารที่ดีเยี่ยมแม้ว่าบางส่วนจะใช้ภาษาอังกฤษได้เล็กน้อย
- รองรับไฟล์ภาษา
- รองรับ reCAPTCHA
- ติดตั้งเข้ากับระบบตรวจสอบความถูกต้องของ CI
- เปิดใช้งานอีเมล
- บัญชีที่ไม่ได้ใช้งานจะหมดอายุโดยอัตโนมัติ
- แนะนำ grc.com สำหรับเกลือ (ไม่เลวสำหรับ PRNG)
- การห้ามด้วยสตริง 'เหตุผล' ที่เก็บไว้
- การจัดการข้อผิดพลาดที่เรียบง่ายและมีประสิทธิภาพ
จุดด้อย
- อนุญาตให้ผู้ใช้รีเซ็ตรหัสผ่านที่หายไป (แทนที่จะปล่อยให้พวกเขาเลือกใหม่เมื่อเปิดใช้งานใหม่)
- แบบจำลองเหตุการณ์ Homebrew หลอก - เจตนาดี แต่พลาดเครื่องหมาย
- รหัสผ่านสองฟิลด์ในตารางผู้ใช้สไตล์ไม่ดี
- ใช้สองตารางผู้ใช้แยกกัน (หนึ่งสำหรับผู้ใช้ 'temp' - คลุมเครือและซ้ำซ้อน)
- ใช้การแฮช md5 ที่อาจไม่ปลอดภัย
- การเข้าสู่ระบบล้มเหลวพยายามจัดเก็บโดย IP เท่านั้นไม่ใช่โดยชื่อผู้ใช้ - ไม่ปลอดภัย!
- คีย์ Autologin ไม่ได้แฮชในฐานข้อมูล - ในทางปฏิบัติไม่ปลอดภัยเท่าการจัดเก็บรหัสผ่านในข้อความธรรมดา!
- ระบบบทบาทเป็นระเบียบที่สมบูรณ์: ฟังก์ชั่น is_admin ที่มีชื่อบทบาทฮาร์ดโค้ด, is_role ระเบียบที่สมบูรณ์ check_uri_permissions เป็นระเบียบตารางสิทธิ์ทั้งหมดเป็นความคิดที่ไม่ดี (URI สามารถเปลี่ยนและแสดงหน้าเว็บที่ไม่มีการป้องกันสิทธิ์ควรถูกเก็บไว้อย่างแน่นอน โดยที่ตรรกะที่ละเอียดอ่อนอยู่) dealbreaker!
- รวม CAPTCHA แบบพื้นเมือง (แย่)
- อินเตอร์เฟสฟังก์ชัน reCAPTCHA นั้นยุ่ง
ข้อดี
- โดดเด่นมากเต็มรูปแบบ
- รหัสเอกสารส่วนใหญ่ค่อนข้างดี
- การแยกข้อมูลผู้ใช้และโปรไฟล์เป็นเรื่องที่ดี
- ติดตั้งเข้ากับระบบตรวจสอบความถูกต้องของ CI
- เปิดใช้งานอีเมล
- รองรับไฟล์ภาษา
- พัฒนาอย่างแข็งขัน
จุดด้อย
- รู้สึกป่องเล็กน้อย (50+ ไฟล์)
- และมันยังขาดการเข้าสู่ระบบคุกกี้อัตโนมัติ (!)
- ไม่รองรับการลงชื่อเข้าใช้ด้วยทั้งชื่อผู้ใช้และอีเมล
- ดูเหมือนว่าจะมีปัญหากับตัวอักษร UTF-8
- ต้องมีการโหลดอัตโนมัติจำนวนมาก (ประสิทธิภาพการกีดขวาง)
- ไฟล์กำหนดค่า micromanaged ไม่ดี
- การแยก View-Controller ที่ยอดเยี่ยมพร้อมลอจิกโปรแกรมจำนวนมากในมุมมองและส่งสัญญาณฮาร์ดโค้ดไปยังคอนโทรลเลอร์ dealbreaker!
- รหัส HTML แย่ในมุมมองที่รวมไว้
- รวมถึง CAPTCHA ที่ต่ำกว่ามาตรฐาน
- ดีบักความคิดเห็นสะท้อนไปทุกที่
- บังคับให้โครงสร้างโฟลเดอร์เฉพาะ
- บังคับให้ไลบรารี Ajax เฉพาะ (สามารถสลับได้ แต่ไม่ควรอยู่ในตำแหน่งแรก)
- ไม่ จำกัด จำนวนครั้งสูงสุดสำหรับการพยายามลงชื่อเข้าใช้ - ไม่ปลอดภัยมาก! dealbreaker!
- การตรวจสอบแบบฟอร์มจี้
- ใช้การแฮช md5 ที่อาจไม่ปลอดภัย
ข้อดี
- คุณสมบัติที่ดีที่กำหนดไว้สำหรับรอยขนาดเล็กของมัน
- น้ำหนักเบาไม่บวม (3 ไฟล์)
- การลงชื่อเข้าใช้คุกกี้อัตโนมัติที่สง่างาม
- มาพร้อมกับการใช้งานการทดสอบเสริม (สัมผัสที่ดี)
จุดด้อย
- ใช้ไวยากรณ์ฐานข้อมูล CI เก่า (ปลอดภัยน้อยกว่า)
- ไม่ขอเข้าสู่ระบบการตรวจสอบของ CI
- ระบบสถานะ (บทบาท) ที่ใช้งานง่าย (ดัชนีกลับหัว - ไม่สามารถใช้งานได้)
- ใช้ hashing sha1 ที่อาจไม่ปลอดภัย
ข้อดี
- รอยขนาดเล็ก (6 ไฟล์)
จุดด้อย
- ขาดคุณสมบัติที่สำคัญมากมาย dealbreaker!
- ทุกอย่างเป็นรหัสยาก dealbreaker!
ตามที่ CodeIgniter wikiนั้น Redux ถูกยกเลิกไปแล้ว แต่ Fork Auth ของ Ion จะแข็งแกร่งขึ้น: https://github.com/benedmunds/CodeIgniter-Ion-Auth
Ion Auth เป็นห้องสมุดที่โดดเด่นเป็นอย่างดีโดยไม่หนักเกินไปหรือต่ำกว่าขั้นสูง ในกรณีส่วนใหญ่ชุดคุณลักษณะจะรองรับความต้องการของโครงการมากกว่า
ข้อดี
- น้ำหนักเบาและง่ายต่อการรวมเข้ากับ CodeIgniter
- รองรับการส่งอีเมลโดยตรงจากห้องสมุด
- จัดทำเอกสารออนไลน์และชุมชนผู้ใช้ dev / ผู้ใช้ที่ดี
- ง่ายต่อการใช้ในโครงการ
จุดด้อย
- สกีมา DB ที่ซับซ้อนกว่าบางรายการ
- เอกสารขาดรายละเอียดในบางพื้นที่
ข้อดี
- รอยขนาดเล็ก (4 ไฟล์)
- เรียบง่ายอย่างแน่นอนไม่ขยาย
- ใช้ phpass เพื่อ hashing (ยอดเยี่ยม)
จุดด้อย
- เฉพาะเข้าสู่ระบบออกจากระบบสร้างและลบ
- ขาดคุณสมบัติที่สำคัญมากมาย dealbreaker!
- มีจุดเริ่มต้นมากกว่าไลบรารี
อย่าเข้าใจฉันผิด:ฉันไม่ได้ตั้งใจจะดูหมิ่นห้องสมุดใด ๆ ข้างต้น ฉันประทับใจมากกับสิ่งที่นักพัฒนาของพวกเขาประสบความสำเร็จและพวกเขาแต่ละคนมาได้ไกลแค่ไหนและฉันไม่ได้ใช้โค้ดของพวกเขาซ้ำเพื่อสร้างของฉันเอง สิ่งที่ฉันพูดคือบางครั้งในโครงการเหล่านี้โฟกัสเปลี่ยนจาก 'จำเป็นต้องมี' ที่จำเป็น (เช่นการรักษาความปลอดภัยที่ยาก) ไปยัง 'ที่ดีเพื่อ haves' นุ่มนวลและนั่นคือสิ่งที่ฉันหวังว่าจะแก้ไข .
ดังนั้นกลับไปสู่พื้นฐาน
นี่คือรายการคุณลักษณะที่จำเป็นขั้นต่ำของฉันจากไลบรารีการตรวจสอบสิทธิ์ นอกจากนี้ยังเป็นส่วนย่อยของรายการคุณสมบัติของห้องสมุดของฉันเอง)
- รอยเท้าจิ๋วด้วยการใช้การทดสอบเสริม
- เอกสารเต็มรูปแบบ
- ไม่จำเป็นต้องมีการโหลดอัตโนมัติ การโหลดไลบรารีแบบทันเวลาเพื่อประสิทธิภาพ
- รองรับไฟล์ภาษา ไม่มีสตริงที่เข้ารหัสยาก
- รองรับ reCAPTCHA แต่ไม่บังคับ
- การสร้างเกลือแบบสุ่มของ TRUE ที่แนะนำ (เช่นการใช้ random.org หรือ random.irb.hr)
- ตัวเลือกเสริมเพื่อสนับสนุนการเข้าสู่ระบบของบุคคลที่สาม (OpenID, Facebook Connect, บัญชี Google, ฯลฯ )
- เข้าสู่ระบบโดยใช้ชื่อผู้ใช้หรืออีเมล
- การแยกข้อมูลผู้ใช้และโปรไฟล์
- อีเมลสำหรับการเปิดใช้งานและรหัสผ่านที่หายไป
- คุณสมบัติเข้าสู่ระบบคุกกี้อัตโนมัติ
- phpass ที่กำหนดค่าสำหรับการ hashing (แน่นอนเค็มอย่างแน่นอน!)
- การแฮ็ชของรหัสผ่าน
- การแฮ็กรหัสออโต้
- การแฮ็ชรหัสผ่านที่หายไป
- ติดตั้งเข้ากับระบบตรวจสอบความถูกต้องของ CI
- ไม่มีคำถามเพื่อความปลอดภัย!
- บังคับใช้นโยบายรหัสผ่านที่คาดเดายากทางฝั่งเซิร์ฟเวอร์พร้อมตัวตรวจสอบความถูกต้องของฝั่งไคลเอ็นต์ (Javascript)
- บังคับใช้จำนวนครั้งสูงสุดของการพยายามเข้าสู่ระบบที่ล้มเหลวด้วยวิธีปฏิบัติที่ดีที่สุดตอบโต้การโจมตีทั้งพจนานุกรมและ DoS!
- การเข้าถึงฐานข้อมูลทั้งหมดทำได้ผ่านคำสั่ง (ผูกไว้)!
หมายเหตุ: ไม่กี่คะแนนสุดท้ายเหล่านั้นไม่ใช่การรักษาความปลอดภัยขั้นสูงที่คุณไม่ต้องการสำหรับเว็บแอปพลิเคชันของคุณ ถ้าไลบรารีการรับรองความถูกต้องไม่ตรงตามมาตรฐานความปลอดภัยเหล่านี้ 100% อย่าใช้มัน!
ตัวอย่างสูงโปรไฟล์ล่าสุดของ coders ที่ไม่รับผิดชอบซึ่งปล่อยให้พวกเขาออกจากซอฟต์แวร์ของพวกเขา: # 17 เป็นวิธีที่อีเมล AOL ของ Sarah Palin ถูกแฮ็คในระหว่างการรณรงค์ของประธานาธิบดี การรวมกันที่น่ารังเกียจของ # 18 และ # 19 เป็นผู้ร้ายเมื่อเร็ว ๆ นี้เมื่อบัญชี Twitter ของ Britney Spears, Barack Obama, Fox News และคนอื่น ๆ ถูกแฮ็ค; และ # 20 เพียงอย่างเดียวคือวิธีที่แฮกเกอร์จีนจัดการเพื่อขโมยข้อมูลส่วนบุคคล 9 ล้านรายการจากเว็บไซต์เกาหลีกว่า 70,000 รายการในการแฮ็กอัตโนมัติหนึ่งรายการในปี 2551
การโจมตีเหล่านี้ไม่ใช่การผ่าตัดสมอง หากคุณเปิดประตูหลังไว้ให้เปิดกว้างคุณไม่ควรหลอกตัวเองให้รู้สึกมั่นคงโดยปิดประตูหน้า ยิ่งไปกว่านั้นถ้าคุณจริงจังกับการเขียนโค๊ดเพื่อเลือกกรอบการทำงานที่ดีที่สุดอย่าง CodeIgniter คุณต้องติดใจกับตัวเองอย่างน้อยก็จะได้มาตรการความปลอดภัยขั้นพื้นฐานที่ถูกต้อง
<พูดจาโผงผาง>
โดยทั่วไปนี่คือวิธี: ฉันไม่สนใจว่าห้องสมุดรับรองความถูกต้องมีคุณสมบัติมากมายการจัดการบทบาทขั้นสูงความเข้ากันได้ของ PHP4 แบบอักษร CAPTCHA สวยตารางประเทศแผงการดูแลระบบที่สมบูรณ์ระฆังและนกหวีด - ถ้าห้องสมุดสร้างขึ้นจริง ไซต์ของฉันปลอดภัยน้อยลงโดยไม่ปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุด เป็นแพ็คเกจตรวจสอบสิทธิ์ จำเป็นต้องทำสิ่งเดียวที่ถูกต้อง: การรับรองความถูกต้อง หากไม่สามารถทำเช่นนั้นได้จริง ๆ แล้วทำอันตรายมากกว่าดี
</ พูดจาโผงผาง>
/ Jens Roland
โปรดทราบว่า "รายการที่ครอบคลุม" โดย Jens Roland ไม่รวมถึงบทบาทของผู้ใช้ หากคุณสนใจกำหนดบทบาทผู้ใช้ที่แตกต่างกัน (เช่นผู้ดูแลระบบ / ผู้ใช้หรือผู้ดูแลระบบ / บรรณาธิการ / ผู้ใช้) ไลบรารีเหล่านี้อนุญาต:
Tank_Auth (# 1 ด้านบนในรายการของ Jens) ไม่มีบทบาทผู้ใช้ ฉันรู้ว่ามันไม่ได้เป็นส่วนหนึ่งของการรับรองความถูกต้อง แต่เนื่องจาก
มันสมเหตุสมผลมากที่จะมีหนึ่งไลบรารีในการจัดการทั้งสองถ้าคุณต้องการ ฉันเปลี่ยนเป็น Ion_Auth จาก Tank_Auth เพราะเหตุนี้
Ion_auth! ดูดีมากและมีขนาดเล็ก! ฉันชอบ..
ฉันเป็นผู้พัฒนา Redux Auth และปัญหาบางอย่างที่คุณกล่าวถึงได้รับการแก้ไขในรุ่นเบต้า 2 คุณสามารถดาวน์โหลดจากเว็บไซต์ offcial ด้วยแอปพลิเคชันตัวอย่างได้
- ต้องมีการโหลดอัตโนมัติ (ประสิทธิภาพการขัดขวาง)
- ใช้แนวคิด 'คำถามความปลอดภัย' ที่ไม่ปลอดภัยโดยเนื้อแท้ dealbreaker!
ไม่ได้ใช้คำถามเพื่อความปลอดภัยและระบบรหัสผ่านที่ลืมได้ง่ายขึ้น
- ประเภทการส่งคืนเป็นบิตของการผสมของรหัสจริงเท็จข้อผิดพลาดและความสำเร็จ
สิ่งนี้ได้รับการแก้ไขในเวอร์ชัน 2 และส่งคืนค่าบูลีน ฉันเกลียดศาลาผสมข้าวเท่าที่คุณ
- ไม่ขอเข้าสู่ระบบการตรวจสอบของ CI
แอปพลิเคชันตัวอย่างใช้ระบบตรวจสอบความถูกต้องของ CI
- ไม่อนุญาตให้ผู้ใช้ส่งรหัส 'รหัสผ่านที่หายไป' อีกครั้ง
กำลังดำเนินการ
ฉันยังใช้คุณสมบัติอื่น ๆ เช่นมุมมองอีเมลซึ่งจะช่วยให้คุณสามารถเลือกใช้ตัวช่วย CodeIgniter ในอีเมลของคุณได้
มันยังคงอยู่ในระหว่างการดำเนินการดังนั้นหากมีข้อเสนอแนะเพิ่มเติมอีกโปรดให้พวกเขาเข้ามา
-ป๊อปคอร์น
Ps: ขอบคุณที่แนะนำ Redux
ฉันเจอ Flexi Auth แล้ว ( http://haseydesign.com/flexi-auth/ ) มันดูมีแนวโน้มมากและฉันก็เริ่มใช้มัน มันมีคุณสมบัติที่ยอดเยี่ยม ทำงานร่วมกับ CI ได้อย่างสมบูรณ์และมาพร้อมกับไฟล์ไลบรารีที่แตกต่างกันสองไฟล์ซึ่งไฟล์หนึ่งมีการโหลดหนักมากพร้อมฟังก์ชั่นทั้งหมดและอีกไฟล์หนึ่งมีเฉพาะการตรวจสอบความถูกต้อง
หนึ่งในสิ่งที่ดีที่สุดคือสมาชิกที่เพิ่งลงทะเบียนใหม่จะได้รับการเข้าถึงชั่วคราวตามระยะเวลาที่กำหนดบนเว็บไซต์จนกว่าพวกเขาจะคลิกลิงก์จากอีเมลและเปิดใช้งาน
บางทีคุณอาจต้องการReduxสิ่งทอสำหรับทำชุดเสื้อผ้าความต้องการของคุณ มันไม่มีราคาแพงเกินไปและมาพร้อมกับฟีเจอร์เปลือยส่วนใหญ่ที่เราต้องการ ผู้พัฒนาและผู้สนับสนุนนั้นเข้มงวดมากในเรื่องของรหัส
นี่คือหน้าอย่างเป็นทางการ
Ion_Auth เต้น tank_auth ส่วนใหญ่ด้วยเหตุผลสองประการบทบาทผู้ใช้และเอกสารประกอบทั้งสองอย่างนี้หายไปจาก tank_auth
ผมใช้รุ่นที่กำหนดเองของDX Auth ฉันพบว่าใช้งานง่ายแก้ไขได้ง่ายมากและมีคู่มือผู้ใช้ (พร้อมตัวอย่างที่ดี)ที่คล้ายกับ Code Igniter's
ยังดูที่ BackendPro ด้วย
ในที่สุดคุณอาจจะเขียนสิ่งที่กำหนดเอง แต่ไม่มีอะไรผิดปกติกับแนวคิดการยืมจาก DX Auth, Freak Auth, BackendPro เป็นต้น
ประสบการณ์ของฉันกับแอพแพคเกจคือเฉพาะโครงสร้างบางอย่างและฉันมีปัญหาในการรวมเข้ากับแอปพลิเคชันของฉันเองโดยไม่ต้องแฮ็กดังนั้นถ้าแพคเกจก่อนมีการอัปเดตฉันต้องโยกย้ายมัน
ฉันยังใช้ Smarty และ ADOdb ในรหัส CI ของฉันดังนั้นไม่ว่าฉันจะลงเอยด้วยการเปลี่ยนแปลงรหัสหลัก ๆ
Tank Auth ดูดี แต่เอกสารเป็นเพียงคำอธิบายเดียวในการติดตั้งรวมถึงไฟล์ PHP แต่ละไฟล์ อย่างน้อยนั่นคือทั้งหมดที่ฉันพบหลังจาก Googling มากมาย บางทีสิ่งที่ผู้คนหมายถึงข้างต้นเมื่อพวกเขาบอกว่า Tank Auth มีเอกสารที่ดีคือรหัสนั้นมีความคิดเห็นดี นั่นเป็นสิ่งที่ดี แต่แตกต่างจากเอกสาร มันคงจะดีถ้ามีเอกสารเกี่ยวกับวิธีรวมฟีเจอร์ของ Tank Auth เข้ากับโค้ดที่คุณมีอยู่
ฉันพยายาม Ion_Auth และซาบซึ้ง btw ...
SimpleLoginSecure ทำให้การตรวจสอบง่ายและปลอดภัย