CodeIgniter 인증 라이브러리를 선택하려면 어떻게 해야 합니까?

있네요.유지보수가 가능하고 사용하기 쉬운 것은 무엇입니까?그들의 장점과 단점은 무엇인가요?



질문에 대한 답변



갱신(2010년 5월 14일):

러시아 개발자인 Ilya Konyukhov는 이를 읽고 난 후 다음 권장사항과 요건에 따라 DX Auth 기반의 CI용 새로운 인증 라이브러리를 작성한 것으로 밝혀졌다.

그리고 결과물인 탱크 인증은 작전부 질문에 대한 대답처럼 보인다.Tank Auth를 CodeIgniter를 위한 최고의 인증 라이브러리라고 부릅니다.필요한 기능을 모두 갖추고 있지만 불필요한 기능은 전혀 없는 견고한 라이브러리입니다.

탱크 인증

장점

  • 풀기능
  • 기능 세트를 고려한 공간 절약(20 파일)
  • 매우 좋은 문서
  • 심플하고 우아한 데이터베이스 설계(DB 테이블 4개만)
  • 대부분의 기능은 옵션이며 구성이 용이함
  • 언어 파일 지원
  • reCAPTCHA 지원
  • CI 검증 시스템에 연결
  • 액티베이션 이메일
  • 이메일, 사용자 이름 또는 둘 다로 로그인(설정 가능)
  • 활성화되지 않은 계정은 자동으로 만료됩니다.
  • 간단하면서도 효과적인 오류 처리
  • 해시에 phpass를 사용합니다(DB의 해시 자동 로그인 코드도 사용).
  • 보안 질문 사용 안 함
  • 사용자와 프로파일 데이터의 분리가 매우 용이함
  • 실패한 로그인 시도에 대한 매우 합리적인 보안 모델(봇 및 DoS 공격에 대한 우수한 보호 기능)

(소) 단점

  • 분실된 비밀번호 코드가 DB에 해시되지 않음
  • 네이티브(불량)의 CAPTCHA가 포함되어 있어 (Google 소유의) reCAPTCHA 서비스에 의존하고 싶지 않은 사용자에게 매우 적합합니다만, 실제로는 충분히 안전하지 않습니다.
  • 매우 희박한 온라인 문서(코드가 잘 문서화되어 직관적이기 때문에 여기서의 작은 문제)

탱크 인증 다운로드


원답:

나 자신의 것도 실장했습니다(현재 약 80%는 몇 주간의 작업 후에 완료).다른 모든 것을 먼저 시도했다; FreakAuth Light, DX Auth, Redux, Simple Login, Simple LoginSecure, pc_user, Fresh Powered 및 기타 몇 가지 기능을 제공합니다.어느 것도 IMO에 미치지 못했습니다.기본 기능이 부족하거나 본질적으로 INSecure이거나 제 취향에 맞지 않는 비대함입니다.

실제로 CodeIgniter 인증 라이브러리의 자세한 내용은 새해 직후 테스트에서 확인했습니다.WWIW, 공유하겠습니다.

DX 인증

장점

  • 풀기능 탑재
  • 중간 크기(25개 이상의 파일)이지만 상당히 슬림한 느낌
  • 훌륭한 문서입니다만, 일부의 서투른 영어도 있습니다.
  • 언어 파일 지원
  • reCAPTCHA 지원
  • CI 검증 시스템에 연결
  • 액티베이션 이메일
  • 활성화되지 않은 계정은 자동으로 만료됩니다.
  • 소금에 대해 grc.com을 제안합니다(PRNG로 나쁘지 않습니다).
  • 저장된 ‘reason’ 문자열로 금지
  • 간단하면서도 효과적인 오류 처리

단점

  • 사용자가 잃어버린 비밀번호만 ‘리셋’할 수 있습니다(재활성화 시 새 비밀번호를 선택할 수 없습니다).
  • Homebrew 유사 사건 모형 – 좋은 의도이지만 표적을 놓쳤습니다.
  • 사용자 테이블의 두 개의 암호 필드, 잘못된 유형
  • 2개의 개별 사용자 테이블 사용 (1개는 ‘템프’ 사용자용 – 애매하고 장황함)
  • 안전하지 않을 수 있는 md5 해시를 사용합니다.
  • 사용자 이름이 아닌 IP에서만 로그인 시도가 실패함 – 안전하지 않음!
  • 데이터베이스에 해시되지 않은 자동 로그인 키 – 암호를 클리어 텍스트에 저장하는 것만큼 안전하지 않습니다.
  • 롤 시스템은 완전 엉망입니다.하드코드된 롤명을 가진 is_admin 함수, is_role 완전 엉망, check_uri_permissions는 완전 엉망입니다(URI는 페이지를 변경하여 보호하지 않고 항상 중요한 로직이 있는 곳에 권한을 저장해야 합니다).딜브레이커!
  • 네이티브(불량) CAPTCHA 포함
  • reCAPTCHA 함수 인터페이스가 지저분함

FreakAuth 라이트

장점

  • 풀기능 탑재
  • 대부분 잘 문서화된 코드입니다.
  • 사용자 및 프로파일 데이터 분리가 용이함
  • CI 검증 시스템에 연결
  • 액티베이션 이메일
  • 언어 파일 지원
  • 적극적으로 개발

단점

  • 약간 더부룩한 느낌(50개 이상의 파일)
  • 그러나 자동 cookie 로그인은 없습니다(!).
  • 사용자 이름과 이메일 로그인을 모두 지원하지 않습니다.
  • UTF-8 문자에 문제가 있는 것 같습니다.
  • 대량의 자동 로딩이 필요(퍼포먼스 저하)
  • 세세한 부분까지 관리되지 않은 설정 파일
  • 보기 및 출력이 컨트롤러에 하드 코딩된 보기 및 많은 프로그램 로직이 포함된 끔찍한 보기-컨트롤러 분리딜브레이커!
  • 포함된 보기의 HTML 코드가 불량합니다.
  • 표준 이하의 CAPTCHA 포함
  • 디버깅 에코가 모든 곳에 코멘트 있음
  • 특정 폴더 구조를 강제 적용합니다.
  • 특정 Ajax 라이브러리를 강제 적용합니다(스위칭은 가능하지만 처음부터 있어서는 안 됩니다).
  • 로그인 시도 최대 제한 없음 – 매우 위험합니다!딜브레이커!
  • 히잡 폼 검증
  • 안전하지 않을 수 있는 md5 해시를 사용합니다.

pc_user

장점

  • 공간 절약성이 뛰어난 기능 세트
  • 경량, 블러트 없음 (3 파일)
  • 우아한 자동 쿠키 로그인
  • 옵션 테스트 구현 포함(나이스 터치)

단점

  • 이전 CI 데이터베이스 구문 사용(안전성이 낮음)
  • CI 검증 시스템에 접속하지 않음
  • 일종의 의도하지 않은 상태(역할) 시스템(지표가 거꾸로 되어 있음-실용적이지 않음)
  • 안전하지 않을 수 있는 sha1 해시를 사용합니다.

전원 공급 완료

장점

  • 공간 절약 (6 파일)

단점

  • 필수 기능이 많이 부족합니다.딜브레이커!
  • 모든 게 하드코드로 되어 있어요딜브레이커!

리덕스/이온 인증

CodeIgniter Wiki에 따르면 Redux는 단종되었지만 Ion Auth 포크는 강세를 보이고 있습니다.https://github.com/benedmunds/CodeIgniter-Ion-Auth

Ion Auth는 기능이 뛰어난 라이브러리입니다.중요하거나 고도의 기능을 갖추고 있지 않습니다.대부분의 경우 해당 기능 세트는 프로젝트의 요구 사항을 충족시키는 것 이상의 기능을 제공합니다.

장점

  • 가볍고 CodeIgniter와의 통합이 간단함
  • 라이브러리에서 직접 이메일 전송 지원
  • 온라인에 잘 문서화되어 있으며, 액티브한 개발/사용자 커뮤니티가 양호함
  • 프로젝트에 간단하게 도입할 수 있다

단점

  • 일부 DB 스키마보다 복잡함
  • 일부 영역에서는 설명서의 상세 내용이 결여되어 있습니다.

Simple Login Secure

장점

  • 공간 절약 (4 파일)
  • 미니멀리즘, 전혀 부풀리지 않음
  • 해시에 phpass를 사용(매우 우수)

단점

  • 로그인, 로그아웃, 생성 및 삭제만 가능
  • 필수 기능이 많이 부족합니다.딜브레이커!
  • 라이브러리보다 더 많은 시작점

오해하지 마세요.저는 위의 도서관들 중 어느 것도 무시하려는 것이 아닙니다. 저는 그들의 개발자들이 성취한 것과 그들 각자가 얼마나 발전했는지에 매우 감명받았습니다. 그리고 저는 그들 코드 중 일부를 제 자신의 것을 만들기 위해 재사용하는 것 이상도 이하도 아닙니다.제 말은, 이러한 프로젝트에서는, 때때로, 「가진 것이 필요하다」(강력한 시큐러티 프랙티스 등)로부터, 보다 부드러운 「가진 것이 좋다」로 초점이 옮겨지는 경우가 있습니다.그것이 바로 제가 수정하고 싶은 것입니다.

따라서, 기본으로 돌아갑시다.

CodeIgniter 인증이 올바르게 완료되었습니다.

다음은 인증 라이브러리에서 필요한 최소 기능 목록입니다.또, 이것은 제 라이브러리의 기능 리스트의 서브셋이기도 합니다.

  1. 옵션 테스트 구현으로 설치 공간 절약
  2. 완전한 문서
  3. 자동 로딩은 불필요합니다.성능을 위한 라이브러리 적시 로딩
  4. 언어 파일 지원, 하드 코드 문자열 없음
  5. reCAPTCHA는 지원되지만 옵션
  6. TRUE 랜덤 소금 생성 권장(예: random.org 또는 random.irb.hr 사용)
  7. 서드파티 로그인을 지원하는 옵션 애드온(OpenID, Facebook Connect, Google 계정 등)
  8. 사용자 이름 또는 이메일을 사용하여 로그인
  9. 사용자와 프로파일 데이터의 분리
  10. 활성화 및 비밀번호 분실에 대한 이메일
  11. 자동 쿠키 로그인 기능
  12. 해싱용 설정 가능한 패스(물론 소금에 절여주세요!)
  13. 비밀번호 해시
  14. 자동 로그인 코드 해시
  15. 분실한 비밀번호 코드 해시
  16. CI 검증 시스템에 연결
  17. 보안 질문 없음!
  18. 클라이언트측(Javascript) 검증기(옵션)를 사용하여 강력한 비밀번호 정책 서버측 적용
  19. 사전 공격과 DoS 공격에 대한 BEST PRACTES 대응책을 통해 로그인 실패 최대 시도 횟수 적용!
  20. 준비된(바운드) 문을 통해 모든 데이터베이스 액세스가 수행됩니다.

주의: 마지막 몇 가지 포인트는 웹 어플리케이션에 필요 없는 초고보안 과잉 살상이 아닙니다.인증 라이브러리가 이러한 보안 표준을 100% 충족하지 못할 경우 사용하지 마십시오.

소프트웨어에서 이들을 빼낸 무책임한 코더들의 최근 사례들: #17은 대통령 선거 운동 기간 동안 사라 페일린의 AOL 이메일이 해킹당한 방법이다. #18과 #19의 불쾌한 조합은 최근 브리트니 스피어스, 버락 오바마, 폭스 뉴스 및 기타의 트위터 계정이 해킹당한 범인이고 #20만이 어떻게 Chines인가이다.e해커들은 2008년 한 번의 자동 해킹으로 7만 개 이상의 국내 웹사이트에서 9백만 개의 개인정보를 훔치는 데 성공했다.

이 공격들은 뇌수술이 아닙니다.뒷문을 활짝 열어둔다면, 앞부분을 빗장으로 고정함으로써 잘못된 안전감에 빠져들지 말아야 한다.게다가 CodeIgniter와 같은 베스트 프랙티스 프레임워크를 선택할 정도로 코딩에 진지하게 임하고 있다면, 최소한 가장 기본적인 보안 조치를 제대로 수행해야 합니다.


<랜트>

기본적으로 다음과 같습니다.인증 라이브러리가 많은 기능, 고급 역할 관리, PHP4 호환성, 예쁜 CAPTCHA 글꼴, 국가별 테이블, 완전한 관리 패널, 벨 및 휘파람을 제공해도 상관없습니다.라이브러리가 실제로 베스트 프랙티스를 따르지 않음으로써 내 사이트의 안전성이 저하되는 경우라도 상관없습니다.인증 패키지이므로 다음 한 가지를 올바르게 수행해야 합니다.인증.그렇게 하지 않으면 득보다 실이 더 커집니다.

</rant>

/옌스 롤랜드




Jens Roland의 “종합 목록”에는 사용자 역할이 포함되지 않습니다.다른 사용자 역할(admin/user 또는 admin/editor/user 등)을 할당하는 경우 다음 라이브러리에서 수행할 수 있습니다.

  • Ion_Auth(Redux의 리라이트)
  • 리덕스
  • 백엔드 프로

Tank_Auth(Jens 목록에서 위의 #1)에는 사용자 역할이 없습니다.인증의 일부가 아닌 건 알지만

  • 인증과 역할 관리는 모두 페이지 로드 시 처리됩니다.
  • 둘 다 보안 관련
  • 두 가지 모두에 동일한 테이블/모델을 사용할 수 있습니다.
  • 둘 다 컨트롤러 컨스트럭터에 로드(또는 자동 로드)하도록 설정할 수 있습니다.

필요에 따라서, 양쪽 모두를 처리할 수 있는 라이브러리가 1개 있는 것이 매우 타당합니다.Ion_으로 전환합니다.탱크에서 인증_이것 때문에 인증합니다.




Ion_auth!매우 유망하고 작은 풋프린트!저는…

http://github.com/benedmunds/CodeIgniter-Ion-Auth




저는 Redux Auth의 개발자이며, 말씀하신 문제 중 일부는 버전 2 베타에서 수정되었습니다.샘플 어플리케이션으로 오프 오피셜 사이트에서 다운로드 할 수도 있습니다.

  • 자동 로딩 필요(퍼포먼스 저하)
  • 본질적으로 안전하지 않은 개념인 ‘보안 질문’을 사용합니다.딜브레이커!

이제 보안 질문은 사용되지 않으며, 잊어버린 비밀번호 시스템이 더 단순하게 도입되었습니다.

  • 반환 유형은 참, 거짓, 오류 및 성공 코드가 혼재되어 있습니다.

이것은 버전 2에서 수정되었으며 부울 값을 반환합니다.나도 너만큼 잡동사니들이 싫었어.

  • CI 검증 시스템에 접속하지 않음

샘플 애플리케이션은 CI의 검증 시스템을 사용합니다.

  • 사용자가 ‘비밀번호 분실’ 코드를 재발송할 수 없습니다.

작업 진행 중

또, E-메일 뷰등의 기능도 실장하고 있습니다.이것에 의해, E-메일로 CodeIgniter 헬퍼를 사용할 수 있게 됩니다.

아직 작업 중이니 더 제안사항이 있으시면 계속 부탁드립니다.

-팝콘

추신 : Redux를 추천해 주셔서 감사합니다.




Flexi Auth(http://haseydesign.com/flexi-auth/)를 발견했습니다.아주 유망해 보여서 사용하기 시작했어요.그것은 놀라운 특징을 가지고 있다.CI와 완전히 통합되며, 두 개의 다른 라이브러리 파일이 함께 제공됩니다. 하나는 모든 기능이 매우 많이 로드되고 다른 하나는 검증만 포함됩니다.

가장 좋은 방법 중 하나는 새로 등록된 회원이 이메일에서 링크를 클릭하여 활성화할 때까지 사이트에서 일정 시간 동안 임시로 액세스할 수 있다는 것입니다.