2011-07-26 4 views
30

중요한 정보를 다루는 직원 전용 Rails 애플리케이션을 우리 회사에서 시작하려고합니다. 방화벽, 물리적 보안 조치 등이있을 것입니다. 현재 나의 관심은 응용 프로그램의 로그인 프로세스입니다.가능한 가장 안전한 Devise 구성은 무엇입니까?

인증을 위해 Devise를 사용하고 싶습니다. Devise의 가장 안전한 구성은 무엇입니까? 그들이 올바른 짐작 한 경우

  • 사용 config.paranoid 그래서 공격자가 말할 수 없다 실패한 로그인 시도의 소수 후

    • 잠금 계정 :

      나는 다음을 수행 줘야 생각하고 있어요 이메일 주소

    • 비밀번호 재설정을 이메일로 비활성화 할 수 있습니까?

    내가 이탤릭체로 devise.rb에서 따옴표의 확실 해요 특정 일의 일부

  • :

    • 고추입니다. Devise는 "암호화 된 암호를 생성하기위한 후추 설정"옵션을 제공합니다. 제 생각에 이것은 "password123"과 같은 어리석은 암호를 "password123K # (! @ akdlwekdf"또는 "* %! kd39gpassword123"또는 해시 전의 문자로 변환하는 단일 응용 프로그램 별 값입니다. 무지개 테이블 공격을 저지하지만, this article에 대한 나의 이해는 비밀 번호 별 고유 소금만큼 좋지 않다는 것입니다. 다시 this articlethis paper은 소금이 내장되어 있다고 말합니다. bcrypt로 고추를 사용하면 실제로 아무 것도 추가합니까? 그리고, 또한 소금 열이 할 필요가있다?
    • 뻗어. this question을 바탕으로 "bcrypt를 들어,이 (10)에 암호 기본값을 해싱에 대한 비용이다", 나는 생각 해요 12의 작업 요소를 사용합니다. 그것은 합리적으로 보입니까?
    • 비밀번호 길이는입니다. 패스워드가 길어질수록 일반적으로 보안이 강화 된 것처럼 보이지만 사용자가 어딘가에 종이에 글을 쓰는 것이 그렇게 어렵지 않기를 바란다. 우리가 bcrypt를 사용한다면 암호 길이가 중요할까요?
    • SSL 쿠키. SSL이 활성화 된 공개 앱의 경우 쿠키를 "HTTPS를 통해서만 전송할 수 있음"으로 표시하면 Firesheep- 스타일 공격을 방지 할 수 있습니다. 하지만 내부 앱에 대한 보안 인증서가 얼마나 많은 의미가 있는지 잘 모르겠습니다. 그거 바보 같은가요?

    그 밖의 무엇이 내가 뭘 놓치고 있습니까?

    +2

    SSL이 바보가 아닙니다. 네트워크를 통해 로그인 자격 증명을 보내면 항상 중요합니다. – meagar

    +3

    나는 같은 질문을 가지고있다. 자신이 배운 내용과 사용한 내용을 공유 할 수있는 자체 응답을 게시 할 수 있습니까? – KobeJohn

    답변

    20

    페퍼 : 예. 후추로 소금을 사용하면 보안 성이 훨씬 향상됩니다.

    스트레치 : 12는 적당하지만 bcrypt는 일정 시간 만 보장합니다. 새로운 scrypt의 사용은 일정 시간과 사용할 메모리의 양을 지정할 수 있도록 고려해야합니다. Cryptyograhpically bcrypt와 scrypt는 거의 같지만 scrypt는 brute forcing을 어렵게 만든다.

    암호 길이 : 모든 종류의 암호 규칙을 강제하면 암호 엔트로피가 감소합니다. 유일한 제한은 최소 길이 여야하며 수많은 연구에서 최소한 8자를 제안했습니다.

    SSL 쿠키 : 가능한 경우 사용하십시오. 보안은 항상 처음부터 구축되어야하며 나중에 추가되지 않아야합니다. 누가 내부 네트워크를 스니핑하는지 알 수 없습니다. 외부인이 데이터를 스니핑 할 수 없다고 가정했기 때문에 내부 직원이 한 가지 이유 또는 다른 이유가 없다는 것을 의미하지는 않습니다. 직원은 외부 위협뿐만 아니라 서로로부터 직원을 보호 할 책임이 있습니다.

    +0

    당신이 devise 용으로 암호화 할 수있는 scrypt를위한 클래스를 원한다면, 나는 그것을 작성했다. 당신은 사용하고 향상시킬 수 있습니다. – chris

    +0

    은 Devise 오픈 소스를위한 당신의 scrypt 클래스입니까? –

    +3

    "후추"는 사용자 별 소금 외에 적용 할 수있는 응용 프로그램 전체의 단일 소금으로 응용 프로그램 코드 (* not * the database)에 있습니다. 이론 상으로는 데이터베이스가 손상되었지만 애플리케이션 코드가 손상 되었다면 도움이 될 수 있습니다. 그러나 기껏해야 bcrypt 나 scrypt와 같은 것의 추가 측정입니다. –

    관련 문제