Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

인증메일 및 비밀번호 찾기에서 새 비밀번호 및 인증키 발급 개선 #1315

Closed
ghost opened this issue Mar 6, 2015 · 9 comments

Comments

@ghost
Copy link

ghost commented Mar 6, 2015

#894

@ghost ghost changed the title 비밀번호 찾기에서 새 비밀번호 및 인증키 발급 개선 인증메일 및 비밀번호 찾기에서 새 비밀번호 및 인증키 발급 개선 Mar 6, 2015
@kijin
Copy link
Contributor

kijin commented Mar 6, 2015

랜덤 비번 생성에 응용할 수 있는 createSecureSalt() 함수가 이미 있는데, 굳이 generateStrongPassword() 함수를 별도로 선언할 필요가 있을까요?

게다가 후자에서 사용하는 array_rand() 함수는 기존의 rand() 함수와 거의 동일한 알고리듬을 사용하고 있어서 그다지 보안이 좋지 못합니다. 특수문자 몇 개가 추가되긴 했지만, 그 대신 알파벳 몇 개가 목록에서 삭제되는 바람에 결국 entropy per byte도 별 차이가 없고요.

@ghost
Copy link
Author

ghost commented Mar 6, 2015

@kijin 회원설정에서 패스워드 보안 수준이 '높음(비밀번호는 8자리 이상이어야 하며 영문과 숫자, 특수문자를 반드시 포함해야 합니다.)'로 설정되었을 때 필요한 특수문자 추가를 위해 generateStrongPassword()를 추가하여 사용했습니다.

@kijin
Copy link
Contributor

kijin commented Mar 6, 2015

고급 엔트로피를 사용하면서도 특수문자가 포함된 랜덤 문자열을 생성할 수 있도록 createSecureSalt() 함수를 변경해 드릴게요.

@ghost
Copy link
Author

ghost commented Mar 6, 2015

@kijin 👍

@kijin
Copy link
Contributor

kijin commented Mar 6, 2015

#1316

@ghost
Copy link
Author

ghost commented Mar 6, 2015

@kijin 10자리로 생성했을 때 숫자 또는 특수문자가 포함되지 않은 문자열이 반환이 됩니다.

  • RbOcnBfWPN
  • y8ZbmmOpuI

generateStrongPassword()에서는 o, O, 0, i, I, l, j 등 직접 입력 시 구분이 어려운 문자가 제외되어 있기도 합니다. 임시로 사용하도록 발급하는 비밀번호이지만 직접 입력 시 인식성 문제도 고려되어야 할 것 같습니다. 대부분 복붙하여 사용하겠지만요^^;

@ghost ghost added the type/enhancement label Mar 6, 2015
@ghost ghost added this to the 1.8.0.beta.2 milestone Mar 6, 2015
@ghost ghost self-assigned this Mar 6, 2015
@kijin
Copy link
Contributor

kijin commented Mar 6, 2015

음, 진짜 랜덤이니까... 경우에 따라서는 특수문자가 포함되지 않을 수도 있겠네요.

일단 안전한 알고리듬으로 난수를 생성해서, 구분이 어려운 문자를 제거하고, 대소문자+숫자+특수문자가 모두 포함되어 있는지 확인한 후에 반환하는 메소드를 추가해 보았습니다. 만약 모든 조건을 충족하지 못할 경우 난수 생성을 다시 시도하고요.

@ajkj
Copy link
Contributor

ajkj commented Mar 9, 2015

직접 입력하는 경우를 고려한다면 : ; , . | \ ' " - [] {} () ~` 등의 입력에 조금 난이도?가 있거나 한눈에 식별이 어려운 특수문자는 제외하는것이 좋지 않을까요?

특히나 backtick 같은경우는 생각보다 입력할줄 모르는 분이 많은것 같았어요. 역슬래시도 원화 표시로 인해 입력에 어려워 하시는 분들도 있었습니다.

@kijin
Copy link
Contributor

kijin commented Mar 10, 2015

@ajkj 말씀하신 내용은 이미 적용되어 있습니다.

@ghost ghost closed this as completed Mar 10, 2015
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants