Tôi thấy có một vài . Những cái nào được duy trì và dễ sử dụng? Ưu và nhược điểm của họ là gì?
Tôi thấy có một vài . Những cái nào được duy trì và dễ sử dụng? Ưu và nhược điểm của họ là gì?
Câu trả lời:
Hóa ra, nhà phát triển người Nga Ilya Konyukhov đã chọn chiếc găng tay sau khi đọc nó và tạo ra một thư viện auth mới cho CI dựa trên DX Auth, theo các khuyến nghị và yêu cầu dưới đây.
Và Tank Auth kết quả giống như câu trả lời cho câu hỏi của OP. Tôi sẽ đi ra ngoài ở đây và gọi Tank Auth là thư viện xác thực tốt nhất cho CodeIgniter hiện có. Đó là một thư viện vững chắc có tất cả các tính năng bạn cần và không có tính năng nào bạn không:
Ưu
- Đầy đủ tính năng
- Dấu chân tinh gọn (20 tệp) khi xem xét bộ tính năng
- Tài liệu rất tốt
- Thiết kế cơ sở dữ liệu đơn giản và thanh lịch (chỉ có 4 bảng DB)
- Hầu hết các tính năng là tùy chọn và dễ dàng cấu hình
- Hỗ trợ tập tin ngôn ngữ
- hỗ trợ reCAPTCHA
- Móc vào hệ thống xác nhận của CI
- Email kích hoạt
- Đăng nhập bằng email, tên người dùng hoặc cả hai (cấu hình)
- Tài khoản chưa được kích hoạt tự động hết hạn
- Xử lý lỗi đơn giản nhưng hiệu quả
- Sử dụng phpass để băm (và cũng băm mã autologin trong DB)
- Không sử dụng câu hỏi bảo mật
- Tách dữ liệu người dùng và hồ sơ rất đẹp
- Mô hình bảo mật rất hợp lý xung quanh các lần đăng nhập thất bại (bảo vệ tốt trước các cuộc tấn công của bot và DoS)
(Nhỏ) Nhược điểm
- Mã mật khẩu bị mất không được băm trong DB
- Bao gồm CAPTCHA (nghèo) gốc, rất phù hợp với những người không muốn phụ thuộc vào dịch vụ reCAPTCHA (do Google sở hữu), nhưng nó thực sự không đủ an toàn
- Tài liệu trực tuyến rất thưa thớt (vấn đề nhỏ ở đây, vì mã được ghi lại độc đáo và trực quan)
Câu trả lời gốc:
Tôi cũng đã tự mình thực hiện (hiện tại đã hoàn thành khoảng 80% sau vài tuần làm việc). Tôi đã thử tất cả những người khác trước; FreakAuth Light, DX Auth, Redux, SimpleLogin, SimpleLoginSecure, pc_user, Fresh Powered, và một vài thứ khác. Không ai trong số họ ngang tầm, IMO, hoặc họ thiếu các tính năng cơ bản, vốn dĩ là INsecure hoặc quá phình to theo sở thích của tôi.
Trên thực tế, tôi đã thực hiện một cuộc thảo luận chi tiết về tất cả các thư viện xác thực cho CodeIgniter khi tôi đang thử nghiệm chúng (ngay sau năm mới). FWIW, tôi sẽ chia sẻ nó với bạn:
Ưu
- Rất đầy đủ tính năng
- Dấu chân trung bình (hơn 25 tệp), nhưng quản lý để cảm thấy khá mỏng
- Tài liệu tuyệt vời, mặc dù một số bằng tiếng Anh hơi bị hỏng
- Hỗ trợ tập tin ngôn ngữ
- hỗ trợ reCAPTCHA
- Móc vào hệ thống xác nhận của CI
- Email kích hoạt
- Tài khoản chưa được kích hoạt tự động hết hạn
- Đề xuất grc.com cho muối (không tệ cho PRNG)
- Cấm với chuỗi 'lý do' được lưu trữ
- Xử lý lỗi đơn giản nhưng hiệu quả
Nhược điểm
- Chỉ cho phép người dùng 'đặt lại' mật khẩu bị mất (thay vì cho phép họ chọn mật khẩu mới khi kích hoạt lại)
- Mô hình sự kiện giả Homebrew - ý định tốt, nhưng bỏ lỡ dấu
- Hai trường mật khẩu trong bảng người dùng, kiểu xấu
- Sử dụng hai bảng người dùng riêng biệt (một cho người dùng 'temp' - mơ hồ và dư thừa)
- Sử dụng băm md5 có khả năng không an toàn
- Nỗ lực đăng nhập thất bại chỉ được lưu trữ bởi IP, không phải bởi tên người dùng - không an toàn!
- Khóa autologin không được băm trong cơ sở dữ liệu - thực tế không an toàn như lưu trữ mật khẩu trong Cleartext!
- Hệ thống vai trò là một mớ hỗn độn: hàm is_admin với các tên vai trò được mã hóa cứng, is_role là một mớ hỗn độn hoàn toàn, check_uri_permmission là một mớ hỗn độn, toàn bộ bảng quyền là một ý tưởng tồi (một URI có thể thay đổi và hiển thị các trang không được bảo vệ; trong đó logic nhạy cảm là). Đại lý!
- Bao gồm CAPTCHA bản địa (nghèo)
- Giao diện chức năng reCAPTCHA lộn xộn
Ưu
- Rất đầy đủ tính năng
- Mã tài liệu khá tốt
- Tách dữ liệu người dùng và hồ sơ là một liên lạc tốt đẹp
- Móc vào hệ thống xác nhận của CI
- Email kích hoạt
- Hỗ trợ tập tin ngôn ngữ
- Tích cực phát triển
Nhược điểm
- Cảm thấy hơi khó chịu (hơn 50 tệp)
- Nhưng nó thiếu đăng nhập cookie tự động (!)
- Không hỗ trợ đăng nhập bằng cả tên người dùng và email
- Có vẻ như có vấn đề với các ký tự UTF-8
- Yêu cầu rất nhiều tự động tải (hiệu suất cản trở)
- Tập tin cấu hình vi mô xấu
- Tách biệt bộ điều khiển khung nhìn khủng khiếp, với rất nhiều logic chương trình trong các khung nhìn và đầu ra được mã hóa cứng vào các bộ điều khiển. Đại lý!
- Mã HTML kém trong các chế độ xem được bao gồm
- Bao gồm CAPTCHA không đạt tiêu chuẩn
- Bình luận gỡ lỗi vang khắp nơi
- Buộc một cấu trúc thư mục cụ thể
- Buộc một thư viện Ajax cụ thể (có thể được chuyển đổi, nhưng không nên ở đó ngay từ đầu)
- Không giới hạn tối đa cho các lần thử đăng nhập - RẤT không an toàn! Đại lý!
- Xác thực hình thức cướp
- Sử dụng băm md5 có khả năng không an toàn
Ưu
- Tính năng tốt được thiết lập cho dấu chân nhỏ bé của nó
- Nhẹ, không phình (3 tập tin)
- Đăng nhập cookie tự động thanh lịch
- Đi kèm với thực hiện kiểm tra tùy chọn (liên lạc tốt đẹp)
Nhược điểm
- Sử dụng cú pháp cơ sở dữ liệu CI cũ (kém an toàn)
- Không nối vào hệ thống xác nhận của CI
- Hệ thống trạng thái (vai trò) không trực quan (chỉ mục lộn ngược - không thực tế)
- Sử dụng băm sha1 có khả năng không an toàn
Ưu
- Dấu chân nhỏ (6 tệp)
Nhược điểm
- Thiếu rất nhiều tính năng cần thiết. Đại lý!
- Mọi thứ đều được mã hóa cứng. Đại lý!
Theo wiki CodeIgniter , Redux đã ngừng hoạt động, nhưng ngã ba Ion Auth đang hoạt động mạnh mẽ: https://github.com/benedmunds/CodeIgniter-Ion-Auth
Ion Auth là một thư viện nổi bật mà không quá nặng hoặc quá cao cấp. Trong hầu hết các trường hợp, bộ tính năng của nó sẽ nhiều hơn phục vụ cho các yêu cầu của dự án.
Ưu
- Nhẹ và đơn giản để tích hợp với CodeIgniter
- Hỗ trợ gửi email trực tiếp từ thư viện
- Tài liệu trực tuyến tốt và cộng đồng dev / người dùng tích cực
- Đơn giản để thực hiện thành một dự án
Nhược điểm
- Lược đồ DB phức tạp hơn một số lược đồ khác
- Tài liệu thiếu chi tiết trong một số lĩnh vực
Ưu
- Dấu chân nhỏ (4 tệp)
- Tối giản, hoàn toàn không phình to
- Sử dụng phpass để băm (xuất sắc)
Nhược điểm
- Chỉ đăng nhập, đăng xuất, tạo và xóa
- Thiếu rất nhiều tính năng cần thiết. Đại lý!
- Nhiều hơn một điểm khởi đầu hơn một thư viện
Đừng hiểu lầm tôi: Tôi không có ý coi thường bất kỳ thư viện nào ở trên; Tôi rất ấn tượng với những gì các nhà phát triển của họ đã đạt được và mỗi người trong số họ đã đi được bao xa và tôi không sử dụng lại một số mã của họ để xây dựng mã của riêng tôi. Điều tôi đang nói là, đôi khi trong các dự án này, trọng tâm chuyển từ 'nhu cầu cần thiết' (chẳng hạn như thực hành bảo mật cứng) sang mềm hơn 'tốt đẹp', và đó là điều tôi hy vọng sẽ khắc phục .
Do đó: trở lại vấn đề cơ bản.
Đây là danh sách các tính năng cần thiết TỐI THIỂU của tôi từ thư viện xác thực. Nó cũng là một tập hợp con trong danh sách tính năng của thư viện của riêng tôi;)
- Dấu chân nhỏ với thực hiện kiểm tra tùy chọn
- Tài liệu đầy đủ
- Không yêu cầu tự động tải. Tải thư viện kịp thời để thực hiện
- Hỗ trợ tập tin ngôn ngữ; không có chuỗi mã hóa cứng
- reCAPTCHA được hỗ trợ nhưng tùy chọn
- Tạo muối ngẫu nhiên TRUE được đề xuất (ví dụ: sử dụng Random.org hoặc Random.irb.hr)
- Các tiện ích bổ sung tùy chọn để hỗ trợ đăng nhập của bên thứ 3 (OpenID, Facebook Connect, Tài khoản Google, v.v.)
- Đăng nhập bằng tên người dùng hoặc email
- Tách dữ liệu người dùng và hồ sơ
- Email để kích hoạt và mất mật khẩu
- Tính năng đăng nhập cookie tự động
- Phpass cấu hình để băm (tất nhiên là được muối đúng cách!)
- Băm mật khẩu
- Băm mã autologin
- Băm mã mật khẩu bị mất
- Móc vào hệ thống xác nhận của CI
- KHÔNG có câu hỏi bảo mật!
- Thực thi chính sách mật khẩu mạnh phía máy chủ, với trình xác nhận tùy chọn phía máy khách (Javascript)
- Đã thực hiện số lần đăng nhập thất bại tối đa với các biện pháp đối phó TỐT NHẤT chống lại các cuộc tấn công từ điển và DoS!
- Tất cả các truy cập cơ sở dữ liệu được thực hiện thông qua các báo cáo chuẩn bị (ràng buộc)!
Lưu ý: những điểm cuối cùng đó không phải là mức độ bảo mật quá cao mà bạn không cần cho ứng dụng web của mình. Nếu thư viện xác thực không đáp ứng 100% các tiêu chuẩn bảo mật này, ĐỪNG SỬ DỤNG NÓ!
Các ví dụ cao cấp gần đây về các lập trình viên vô trách nhiệm đã loại bỏ chúng khỏi phần mềm của họ: # 17 là cách email AOL của Sarah Palin bị hack trong chiến dịch của Tổng thống; một sự kết hợp khó chịu giữa # 18 và # 19 là thủ phạm gần đây khi các tài khoản Twitter của Britney Spears, Barack Obama, Fox News và những người khác bị hack; và riêng số 20 là cách tin tặc Trung Quốc quản lý để đánh cắp 9 triệu mục thông tin cá nhân từ hơn 70.000 trang web của Hàn Quốc trong một vụ hack tự động vào năm 2008.
Những cuộc tấn công này không phải là phẫu thuật não. Nếu bạn để cửa sau mở rộng, bạn không nên ảo tưởng về cảm giác an toàn giả tạo bằng cách chốt phía trước. Hơn nữa, nếu bạn đủ nghiêm túc về mã hóa để chọn một khung thực hành tốt nhất như CodeIgniter, thì bạn nợ chính mình ít nhất là thực hiện đúng các biện pháp bảo mật cơ bản nhất .
<rant>
Về cơ bản, đây là cách: Tôi không quan tâm nếu thư viện xác thực cung cấp nhiều tính năng, quản lý vai trò nâng cao, tương thích PHP4, phông chữ CAPTCHA đẹp, bảng quốc gia, bảng quản trị hoàn chỉnh, chuông và còi - nếu thư viện thực sự tạo ra trang web của tôi kém an toàn hơn bằng cách không tuân theo các thực tiễn tốt nhất. Đó là một gói xác thực ; nó cần phải làm MỘT điều đúng: Xác thực. Nếu nó không làm điều đó , nó thực sự gây hại nhiều hơn là tốt.
</ rant>
/ Jens Roland
Lưu ý rằng "danh sách toàn diện" của Jens Roland không bao gồm vai trò người dùng. Nếu bạn quan tâm đến việc gán các vai trò người dùng khác nhau (như quản trị viên / người dùng hoặc quản trị viên / biên tập viên / người dùng), các thư viện này cho phép:
Tank_Auth (số 1 ở trên trong danh sách của Jens) không có vai trò người dùng. Tôi nhận ra nó không chính xác là một phần của xác thực, nhưng vì
Thật có ý nghĩa khi có một thư viện để xử lý cả hai, nếu bạn cần nó. Tôi đang chuyển sang Ion_Auth từ Tank_Auth vì điều này.
Ion_auth! Trông rất hứa hẹn và dấu chân nhỏ! Tôi thích..
Tôi là nhà phát triển của Redux Auth và một số vấn đề bạn đã đề cập đã được khắc phục trong phiên bản 2 beta. Bạn cũng có thể tải xuống trang web offcial này bằng một ứng dụng mẫu.
- Yêu cầu tự động tải (hiệu suất cản trở)
- Sử dụng khái niệm không an toàn vốn có của 'câu hỏi bảo mật'. Đại lý!
Các câu hỏi bảo mật hiện không được sử dụng và một hệ thống mật khẩu bị quên đơn giản hơn đã được đưa ra.
- Các kiểu trả về là một chút của một mã số đúng, sai, lỗi và mã thành công
Điều này đã được sửa trong phiên bản 2 và trả về giá trị boolean. Tôi ghét hodgepodge nhiều như bạn.
- Không nối vào hệ thống xác nhận của CI
Ứng dụng mẫu sử dụng hệ thống xác nhận của CI.
- Không cho phép người dùng gửi lại mã 'mất mật khẩu'
Công việc đang tiến triển
Tôi cũng đã triển khai một số tính năng khác như chế độ xem email, điều này cho bạn lựa chọn có thể sử dụng trình trợ giúp CodeIgniter trong email của bạn.
Đây vẫn là một công việc đang tiến triển vì vậy nếu có thêm gợi ý nào, vui lòng tiếp tục gửi chúng.
-Bắp rang bơ
Ps: Cảm ơn đã giới thiệu Redux.
Tôi đã đi qua Flexi Auth ( http://haseydesign.com/flexi-auth/ ). Nó trông rất hứa hẹn và tôi đã bắt đầu sử dụng nó. Nó có tính năng wonderfful. Tích hợp đầy đủ với CI và đi kèm với hai tệp thư viện khác nhau, trong đó một tệp được tải rất nặng với tất cả các chức năng và tệp còn lại chỉ chứa các xác nhận.
Một trong những điều tốt nhất là thành viên mới đăng ký được quyền truy cập tạm thời trong một khoảng thời gian nhất định trên trang web, cho đến khi họ nhấp vào liên kết từ email của họ và kích hoạt.
Có lẽ bạn sẽ tìm thấy Redux phù hợp với nhu cầu của bạn. Nó không quá mức cần thiết và chỉ được đóng gói với các tính năng trần mà hầu hết chúng ta sẽ yêu cầu. Các nhà phát triển và người đóng góp rất nghiêm ngặt về những gì mã được đóng góp.
Đây là trang chính thức
Tôi sử dụng phiên bản tùy chỉnh của DX Auth . Tôi thấy nó đơn giản để sử dụng, cực kỳ dễ sửa đổi và nó có hướng dẫn sử dụng (với các ví dụ tuyệt vời) rất giống với Code Igniter.
Ngoài ra hãy xem BackendPro
Cuối cùng, bạn có thể sẽ viết một cái gì đó tùy chỉnh, nhưng không có gì sai khi mượn các khái niệm từ DX Auth, Freak Auth, BackendPro, v.v.
Kinh nghiệm của tôi với các ứng dụng được đóng gói là chúng dành riêng cho một số cấu trúc nhất định và tôi đã gặp vấn đề khi tích hợp chúng vào các ứng dụng của riêng mình mà không yêu cầu hack, sau đó nếu gói trước có bản cập nhật, tôi phải di chuyển chúng vào.
Tôi cũng sử dụng Smarty và ADOdb trong mã CI của mình, vì vậy dù thế nào tôi cũng sẽ luôn thay đổi mã lớn.
Tank Auth có vẻ tốt nhưng tài liệu chỉ là một lời giải thích một trang về cách cài đặt, cộng với việc chạy nhanh từng tệp PHP. Ít nhất đó là tất cả những gì tôi tìm thấy sau rất nhiều Google. Có lẽ những gì mọi người muốn nói ở trên khi họ nói rằng Tank Auth được ghi chép rõ ràng là mã được nhận xét tốt. Đó là một điều tốt, nhưng khác với tài liệu. Thật tuyệt khi có một số tài liệu về cách tích hợp các tính năng của Tank Auth với mã hiện tại của bạn.
Tôi đang dùng thử Ion_Auth và đánh giá cao nó, btw ...
SimpleLoginSecure Làm cho xác thực đơn giản và an toàn.