Node.js 및 MongoDB로 비밀번호 저장
node.js 및 mongodb를 사용하여 암호 및 기타 민감한 데이터를 안전하게 저장하는 방법에 대한 몇 가지 예를 찾고 있습니다.
모든 것이 mongo 문서의 해시와 함께 저장할 고유 한 소금을 사용하기를 원합니다.
인증을 위해 입력을 솔트하고 암호화하고 저장된 해시와 일치시켜야합니까?
이 데이터를 해독해야한다면 어떻게해야합니까?
개인 키 또는 솔팅 방법이 서버에 안전하게 저장되는 방법은 무엇입니까?
AES와 Blowfish가 모두 좋은 옵션이라고 들었는데, 무엇을 사용해야합니까?
이것을 설계하는 방법에 대한 모든 예가 매우 도움이 될 것입니다!
감사!
이것을 사용하십시오 : https://github.com/ncb000gt/node.bcrypt.js/
bcrypt는이 사용 사례에 초점을 맞춘 몇 가지 알고리즘 중 하나입니다. 암호를 해독 할 수 없어야하며 사용자가 입력 한 일반 텍스트 암호가 저장 / 암호화 된 해시와 일치하는지 확인하기 만하면됩니다.
bcrypt는 사용하기 매우 간단합니다. 다음은 내 Mongoose 사용자 스키마 (CoffeeScript)의 일부입니다. bycrypt가 (의도적으로) 느리기 때문에 비동기 함수를 사용하십시오.
class User extends SharedUser
defaults: _.extend {domainId: null}, SharedUser::defaults
#Irrelevant bits trimmed...
password: (cleartext, confirm, callback) ->
errorInfo = new errors.InvalidData()
if cleartext != confirm
errorInfo.message = 'please type the same password twice'
errorInfo.errors.confirmPassword = 'must match the password'
return callback errorInfo
message = min4 cleartext
if message
errorInfo.message = message
errorInfo.errors.password = message
return callback errorInfo
self = this
bcrypt.gen_salt 10, (error, salt)->
if error
errorInfo = new errors.InternalError error.message
return callback errorInfo
bcrypt.encrypt cleartext, salt, (error, hash)->
if error
errorInfo = new errors.InternalError error.message
return callback errorInfo
self.attributes.bcryptedPassword = hash
return callback()
verifyPassword: (cleartext, callback) ->
bcrypt.compare cleartext, @attributes.bcryptedPassword, (error, result)->
if error
return callback(new errors.InternalError(error.message))
callback null, result
또한 이 기사를 읽으면 bcrypt가 좋은 선택임을 확신 하고 "잘되고 진정으로 효험이있는"사람이되는 것을 방지 할 수 있습니다.
이것은 내가 지금까지 본 최고의 예이며 node.bcrypt.js http://devsmash.com/blog/password-authentication-with-mongoose-and-bcrypt를 사용합니다.
참고 URL : https://stackoverflow.com/questions/6951563/storing-passwords-with-node-js-and-mongodb
'Programing' 카테고리의 다른 글
Android Firebase DynamiteModule : 모듈 설명자를로드하지 못했습니다. (0) | 2020.11.06 |
---|---|
Java 5+의 휘발성이 다른 스레드의 가시성을 보장하지 않는 이유는 무엇입니까? (0) | 2020.11.06 |
슈퍼 컴파일이란 무엇입니까? (0) | 2020.11.06 |
기본 클래스로서의 Lambda 함수 (0) | 2020.11.06 |
XML 스키마 (XSD)에서 Json 스키마 생성 (0) | 2020.11.06 |