[php] CodeIgniter에 대한 인증 라이브러리를 어떻게 선택해야합니까? [닫은]

나는 몇 가지 가 참조하십시오 . 어느 것이 유지 관리되고 사용하기 쉬운가? 그들의 장단점은 무엇입니까?



답변

업데이트 (2010 년 5 월 14 일) :

러시아 개발자 Ilya Konyukhov는이 글을 읽은 후 건틀릿을 집어 들고 아래 권장 사항과 요구 사항에 따라 DX Auth 기반 CI에 대한 새로운 인증 라이브러리를 만들었습니다.

결과적으로 탱크 인증 은 OP의 질문에 대한 답변처럼 보입니다. 여기서 사지로 나가서 현재 사용할 수있는 CodeIgniter를위한 최고의 인증 라이브러리 인 Tank Auth를 호출합니다. 그것은 당신이 필요로하는 모든 기능을 가지고 있고 당신이하지 않는 팽창을 가지고있는 견고한 라이브러리입니다 :

탱크 인증

찬성

  • 모든 기능
  • 기능 세트를 고려한 마른 공간 (20 개 파일)
  • 아주 좋은 문서
  • 간단하고 우아한 데이터베이스 디자인 (단 4 개의 DB 테이블)
  • 대부분의 기능은 선택 사항이며 쉽게 구성 할 수 있습니다
  • 언어 파일 지원
  • reCAPTCHA 지원
  • CI 검증 시스템에 연결
  • 활성화 이메일
  • 이메일, 사용자 이름 또는 둘 다로 로그인 (구성 가능)
  • 비활성화 된 계정 자동 만료
  • 간단하면서도 효과적인 오류 처리
  • 해싱에 phpass를 사용합니다 (또한 DB의 자동 로그인 코드를 해시합니다)
  • 보안 질문을 사용하지 않습니다
  • 사용자와 프로필 데이터의 분리는 매우 좋습니다
  • 로그인 시도 실패에 대한 매우 합리적인 보안 모델 (봇 및 DoS 공격에 대한 우수한 보호)

(부) 단점

  • 분실 한 비밀번호 코드는 DB에서 해시되지 않습니다
  • (Google 소유의) reCAPTCHA 서비스에 의존하고 싶지 않은 사람들에게는 좋은 기본 (가난한) 보안 문자를 포함하지만 실제로는 충분히 안전하지 않습니다.
  • 매우 드문 온라인 문서 (코드가 잘 문서화되고 직관적이므로 사소한 문제)

탱크 인증을 여기에서 다운로드하십시오


원래 답변 :

나 자신도 구현했습니다 (현재 몇 주 동안 일한 후 약 80 % 완료). 나는 다른 모든 것을 먼저 시도했다. FreakAuth Light, DX Auth, Redux, SimpleLogin, SimpleLoginSecure, pc_user, Fresh Powered 및 기타 몇 가지. 그들 중 누구도 기본 기능이 부족하거나 본질적으로 안전하지 않거나 내 취향에 너무 부풀어 오르지 않았습니다.

실제로 CodeIgniter에 대한 모든 인증 라이브러리를 테스트 할 때 (새해 직후) 세부적으로 정리했습니다. FWIW, 나는 그것을 당신과 공유 할 것입니다 :

DX 인증

찬성

  • 매우 완전한 기능
  • 중간 크기 (25 개 이상의 파일)이지만 상당히 슬림하게 느껴집니다.
  • 일부는 약간 깨진 영어이지만 훌륭한 문서
  • 언어 파일 지원
  • reCAPTCHA 지원
  • CI 검증 시스템에 연결
  • 활성화 이메일
  • 비활성화 된 계정 자동 만료
  • grc.com에 소금 제안 (PRNG에 나쁘지 않음)
  • 저장된 ‘이유’문자열로 금지
  • 간단하면서도 효과적인 오류 처리

단점

  • 재 활성화시 새 비밀번호를 선택하지 않고 사용자가 분실 한 비밀번호를 ‘재설정’할 수만 있습니다.
  • 사제 의사 이벤트 모델-좋은 의도, 그러나 마크를 그리워
  • 사용자 테이블에있는 두 개의 비밀번호 필드 (잘못된 스타일)
  • 두 개의 개별 사용자 테이블을 사용합니다 (하나는 ‘임시’사용자를 위해-모호하고 중복 됨)
  • 잠재적으로 안전하지 않은 MD5 해싱 사용
  • 실패한 로그인 시도는 사용자 이름이 아닌 IP로만 저장됩니다-안전하지 않습니다!
  • 데이터베이스에 자동 로그인 키가 해시되지 않음-암호를 일반 텍스트로 저장하는 것만 큼 안전하지 않습니다!
  • 역할 시스템은 완전한 엉망입니다. 하드 코딩 된 역할 이름을 가진 is_admin 함수, is_role 완전한 엉망, check_uri_permissions는 엉망입니다. 전체 권한 테이블은 잘못된 생각입니다 (URI는 페이지를 보호하지 않고 렌더링 할 수 있으며 권한은 항상 정확하게 저장되어야합니다) 민감한 논리). 계약 위반!
  • 기본 (가난한) 보안 문자 포함
  • reCAPTCHA 함수 인터페이스가 지저분하다

FreakAuth 라이트

찬성

  • 매우 완전한 기능
  • 대부분 잘 문서화 된 코드
  • 사용자와 프로필 데이터의 분리는 좋은 터치입니다
  • CI 검증 시스템에 연결
  • 활성화 이메일
  • 언어 파일 지원
  • 적극적으로 개발

단점

  • 약간 부풀어 오른 느낌 (50+ 파일)
  • 그러나 자동 쿠키 로그인 (!)이 부족합니다.
  • 사용자 이름과 이메일로 로그인을 지원하지 않습니다
  • UTF-8 문자에 문제가있는 것 같습니다
  • 많은 자동 로딩이 필요합니다 (성능 저하).
  • 잘못 관리 된 구성 파일
  • 뷰에 많은 프로그램 로직이 있고 컨트롤러에 하드 코딩 된 출력으로 끔찍한 뷰 컨트롤러 분리. 계약 위반!
  • 포함 된보기의 HTML 코드가 잘못되었습니다.
  • 비표준 보안 문자 포함
  • 주석 처리 된 디버그가 모든 곳에서 울림
  • 특정 폴더 구조를 강제합니다
  • 특정 Ajax 라이브러리를 강제 실행합니다 (전환 할 수 있지만 처음에는 없어야 함)
  • 로그인 시도에 대한 최대 제한 없음-매우 안전하지 않습니다! 계약 위반!
  • 도용 양식 확인
  • 잠재적으로 안전하지 않은 MD5 해싱 사용

pc_user

찬성

  • 작은 설치 공간을위한 우수한 기능 세트
  • 가볍고 팽만감 없음 (3 개 파일)
  • 우아한 자동 쿠키 로그인
  • 선택적 테스트 구현 제공 (좋은 터치)

단점

  • 이전 CI 데이터베이스 구문을 사용합니다 (안전하지 않음).
  • CI의 유효성 검사 시스템에 연결되지 않습니다
  • 직관적이지 않은 상태 (역할) 시스템 (인덱스 거꾸로-실용적이지 않음)
  • 잠재적으로 안전하지 않은 sha1 해싱 사용

신선한 전원

찬성

  • 작은 설치 공간 (6 개 파일)

단점

  • 필수 기능이 부족합니다. 계약 위반!
  • 모든 것이 하드 코딩되었습니다. 계약 위반!

Redux / 이온 인증

CodeIgniter 위키 에 따르면 Redux는 중단되었지만 이온 인증 포크는 강력하게 진행되고 있습니다 : https://github.com/benedmunds/CodeIgniter-Ion-Auth

Ion Auth는 지나치게 무겁거나 고급 기능이없는 훌륭한 기능을 갖춘 라이브러리입니다. 대부분의 경우 해당 기능 세트는 프로젝트 요구 사항을 충족시킵니다.

찬성

  • 가볍고 간단한 CodeIgniter와 통합
  • 라이브러리에서 직접 이메일 전송 지원
  • 잘 문서화 된 온라인 및 활발한 개발자 / 사용자 커뮤니티
  • 프로젝트에 간단하게 구현

단점

  • 다른 것보다 더 복잡한 DB 스키마
  • 일부 영역에서 문서에 세부 사항이 부족함

SimpleLoginSecure

찬성

  • 작은 설치 공간 (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. 해싱을위한 설정 가능한 phpass (물론 소금에 절인!)
  13. 비밀번호 해싱
  14. 자동 로그인 코드 해싱
  15. 잊어 버린 암호 코드 해싱
  16. CI 검증 시스템에 연결
  17. 보안 질문이 없습니다!
  18. 클라이언트 측 (자바 스크립트) 검사기 (옵션)를 사용하여 강력한 비밀번호 정책 서버 측을 시행합니다.
  19. 사전 및 DoS 공격에 대한 BEST PRACTICES 대책으로 로그인 실패 횟수를 최대로 강화했습니다 !
  20. 준비된 (바운드) 명령문을 통해 모든 데이터베이스 액세스!

참고 : 그 마지막 몇 가지 포인트가 없습니다 당신이 당신의 웹 응용 프로그램이 필요하지 않습니다 과잉 것을 슈퍼 높은 보안을 제공합니다. 인증 라이브러리가 이러한 보안 표준을 100 % 충족하지 않으면 IT를 사용하지 마십시오!

소프트웨어에서 제외시킨 무책임한 코더의 최근 주요 사례 : # 17은 대통령 선거 기간 동안 Sarah Palin의 AOL 이메일이 해킹 된 방식입니다. 브리트니 스피어스, 버락 오바마, 폭스 뉴스 등의 트위터 계정이 해킹 당했을 때 최근 # 18과 # 19의 조합이 범인이었습니다. 그리고 20 위는 중국 해커들이 2008 년 한 번의 자동 해킹으로 70.000 개 이상의 한국 웹 사이트에서 9 백만 개의 개인 정보를 훔친 방법입니다.

이러한 공격은 뇌 수술이 아닙니다. 뒷문을 활짝 열어 둔 채로두면 앞면을 볼트로 조여서 안전을 허위로 느끼지 않아야합니다. 또한 CodeIgniter와 같은 모범 사례 프레임 워크를 선택하기 위해 코딩에 대해 충분히 진지한 경우 최소한 가장 기본적인 보안 조치를 올바르게 수행해야합니다.


<랜트>

기본적으로 다음과 같습니다 . 인증 라이브러리가 많은 기능, 고급 역할 관리, PHP4 호환성, 예쁜 CAPTCHA 글꼴, 국가 테이블, 완전한 관리자 패널, 종소리 및 휘파람을 제공하는지 여부는 중요 하지 않습니다. 모범 사례를 따르지 않아 내 사이트의 보안 수준이 떨어 집니다. 그것은의 인증 패키지; 한 가지만 수행해야합니다. 인증. 그것이 어떻게 실패 할 경우 , 실제로 좋은보다는 해를 더하고있어.

</ rant>

/ Jens Roland


답변

Jens Roland의 “포괄적 인 목록”에는 사용자 역할이 포함되어 있지 않습니다. 다른 사용자 역할 (예 : admin / user 또는 admin / editor / user)을 지정하려면 다음 라이브러리를 사용하십시오.

  • Ion_Auth (리덕스 재 작성)
  • 리덕스
  • 백엔드 프로

Tank_Auth (위의 Jens 목록에서 1 위)에는 사용자 역할이 없습니다. 인증의 일부가 아니라는 것을 알고 있습니다.

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

필요한 경우 하나의 라이브러리를 사용하여 두 라이브러리를 모두 처리하는 것이 좋습니다. 이 때문에 Tank_Auth에서 Ion_Auth로 전환하고 있습니다.


답변

Ion_auth! 매우 유망하고 작은 발자국으로 보입니다! 나는 ..

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


답변

저는 Redux Auth의 개발자이며 언급 한 문제 중 일부는 버전 2 베타에서 수정되었습니다. 샘플 응용 프로그램으로 오프 사이트 웹 사이트에서이 파일을 다운로드 할 수도 있습니다.

  • 자동 로딩 필요 (성능 저하)
  • 본질적으로 안전하지 않은 ‘보안 질문’개념을 사용합니다. 계약 위반!

보안 질문은 이제 사용되지 않고 더 잊혀진 암호 시스템이 마련되었습니다.

  • 반환 유형은 true, false, error 및 success 코드로 구성됩니다.

이것은 버전 2에서 수정되었으며 부울 값을 반환합니다. 나는 너만큼 호지 포지를 싫어했다.

  • CI의 유효성 검사 시스템에 연결되지 않습니다

샘플 응용 프로그램은 CI의 유효성 검사 시스템을 사용합니다.

  • 사용자가 ‘잃어버린 암호’코드를 다시 보낼 수 없습니다

진행중인 작업

전자 메일보기와 같은 다른 기능도 구현했습니다. 그러면 전자 메일에서 CodeIgniter 도우미를 사용할 수 있습니다.

아직 진행중인 작업이므로 더 제안이 있으시면 계속 해주세요.

-팝콘

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


답변

Flexi Auth ( http://haseydesign.com/flexi-auth/ )를 보았습니다 . 매우 유망 해 보이며 사용하기 시작했습니다. 멋진 기능이 있습니다. CI와 완전히 통합되며 두 개의 서로 다른 라이브러리 파일이 함께 제공됩니다. 하나는 모든 기능이 매우 많이로드되고 다른 하나는 유효성 검사 만 포함합니다.

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


답변

아마도 당신은 당신의 요구에 맞는 Redux를 찾을 것입니다. 과잉이 아니며 대부분의 사람들이 필요로하는 베어 기능만으로 제공됩니다. 개발자와 기고자들은 어떤 코드가 제공되었는지 매우 엄격했습니다.

이것은이다 공식 페이지


답변

Ion_Auth는 주로 사용자 역할과 문서화의 두 가지 이유로 tank_auth를 능가합니다.이 두 가지가 tank_auth에서 누락되었습니다.