나는 몇 가지 가 참조하십시오 . 어느 것이 유지 관리되고 사용하기 쉬운가? 그들의 장단점은 무엇입니까?
답변
업데이트 (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의 완료에 대한 인증 못했습니다
인증 라이브러리의 최소 필수 기능 목록은 다음과 같습니다. 또한 내 라이브러리 기능 목록의 하위 집합이됩니다.)
- 선택적 테스트 구현을 통한 작은 설치 공간
- 전체 문서
- 자동 로딩이 필요하지 않습니다. 성능을 위해 라이브러리를 적시에 로딩
- 언어 파일 지원; 하드 코딩 된 문자열 없음
- reCAPTCHA는 지원하지만 옵션
- 권장되는 TRUE 랜덤 솔트 생성 (예 : random.org 또는 random.irb.hr 사용)
- 타사 로그인 (OpenID, Facebook Connect, Google 계정 등)을 지원하는 선택적 애드온
- 사용자 이름 또는 이메일을 사용하여 로그인
- 사용자 및 프로필 데이터 분리
- 활성화 및 비밀번호 분실을위한 이메일
- 자동 쿠키 로그인 기능
- 해싱을위한 설정 가능한 phpass (물론 소금에 절인!)
- 비밀번호 해싱
- 자동 로그인 코드 해싱
- 잊어 버린 암호 코드 해싱
- CI 검증 시스템에 연결
- 보안 질문이 없습니다!
- 클라이언트 측 (자바 스크립트) 검사기 (옵션)를 사용하여 강력한 비밀번호 정책 서버 측을 시행합니다.
- 사전 및 DoS 공격에 대한 BEST PRACTICES 대책으로 로그인 실패 횟수를 최대로 강화했습니다 !
- 준비된 (바운드) 명령문을 통해 모든 데이터베이스 액세스!
참고 : 그 마지막 몇 가지 포인트가 없습니다 당신이 당신의 웹 응용 프로그램이 필요하지 않습니다 과잉 것을 슈퍼 높은 보안을 제공합니다. 인증 라이브러리가 이러한 보안 표준을 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! 매우 유망하고 작은 발자국으로 보입니다! 나는 ..
답변
저는 Redux Auth의 개발자이며 언급 한 문제 중 일부는 버전 2 베타에서 수정되었습니다. 샘플 응용 프로그램으로 오프 사이트 웹 사이트에서이 파일을 다운로드 할 수도 있습니다.
- 자동 로딩 필요 (성능 저하)
- 본질적으로 안전하지 않은 ‘보안 질문’개념을 사용합니다. 계약 위반!
보안 질문은 이제 사용되지 않고 더 잊혀진 암호 시스템이 마련되었습니다.
- 반환 유형은 true, false, error 및 success 코드로 구성됩니다.
이것은 버전 2에서 수정되었으며 부울 값을 반환합니다. 나는 너만큼 호지 포지를 싫어했다.
- CI의 유효성 검사 시스템에 연결되지 않습니다
샘플 응용 프로그램은 CI의 유효성 검사 시스템을 사용합니다.
- 사용자가 ‘잃어버린 암호’코드를 다시 보낼 수 없습니다
진행중인 작업
전자 메일보기와 같은 다른 기능도 구현했습니다. 그러면 전자 메일에서 CodeIgniter 도우미를 사용할 수 있습니다.
아직 진행중인 작업이므로 더 제안이 있으시면 계속 해주세요.
-팝콘
Ps : Redux를 추천 해 주셔서 감사합니다.
답변
Flexi Auth ( http://haseydesign.com/flexi-auth/ )를 보았습니다 . 매우 유망 해 보이며 사용하기 시작했습니다. 멋진 기능이 있습니다. CI와 완전히 통합되며 두 개의 서로 다른 라이브러리 파일이 함께 제공됩니다. 하나는 모든 기능이 매우 많이로드되고 다른 하나는 유효성 검사 만 포함합니다.
가장 좋은 방법 중 하나는 새로 등록한 회원이 이메일에서 링크를 클릭하고 활성화 할 때까지 사이트에서 일정 시간 동안 임시 액세스 할 수 있다는 것입니다.