bcrypt를 활용한 안전한 비밀번호 저장 방법
웹 개발을 하다 보면, 사용자의 비밀번호를 안전하게 보호하는 것이 얼마나 중요한지 알게 됩니다. 오늘은 여러분에게 bcrypt
를 사용하여 비밀번호를 안전하게 저장하는 방법을 소개하고자 합니다. 이 방법은 주니어 개발자들도 쉽게 이해하고 적용할 수 있습니다.
bcrypt란 무엇인가요?
bcrypt
는 비밀번호를 암호화하는 데 사용되는 함수입니다. 사용자의 비밀번호를 단순히 데이터베이스에 저장하는 대신, bcrypt
를 사용하여 비밀번호를 암호화하고 그 결과를 저장합니다. 이렇게 하면 심지어 데이터베이스가 해킹당하더라도 비밀번호가 노출되는 것을 방지할 수 있습니다.
bcrypt 사용 방법
Node.js 환경에서 bcrypt
를 사용하는 예를 들어 보겠습니다. 먼저, bcrypt
모듈을 프로젝트에 추가해야 합니다.
npm install bcrypt
이제, 비밀번호를 암호화하는 간단한 코드를 작성할 수 있습니다.
const bcrypt = require('bcrypt');
const saltRounds = 10;
const myPassword = 'supersecretpassword';
const salt = bcrypt.genSaltSync(saltRounds);
const hash = bcrypt.hashSync(myPassword, salt);
console.log('암호화된 비밀번호:', hash);
위 코드에서 saltRounds
는 암호화의 복잡성을 결정합니다. 숫자가 높을수록 비밀번호를 암호화하는 데 더 많은 시간이 걸리지만, 그만큼 안전해집니다.
비밀번호 확인
사용자가 로그인할 때, 저장된 해시와 입력된 비밀번호가 일치하는지 확인해야 합니다. bcrypt
는 이를 위한 함수도 제공합니다.
const bcrypt = require('bcrypt');
// 저장된 해시 (데이터베이스에서 가져온 것으로 가정)
const storedHash = '$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZRE9xT3xVCLTJfB6B5PcSaxMBPW5e';
// 사용자가 로그인 시 입력한 비밀번호
const loginPassword = 'supersecretpassword';
// 비밀번호 확인
bcrypt.compare(loginPassword, storedHash, function(err, result) {
if (result) {
console.log('로그인 성공!');
} else {
console.log('비밀번호가 일치하지 않습니다.');
}
});
이 코드는 사용자가 로그인할 때 입력한 비밀번호와 데이터베이스에 저장된 해시를 비교합니다. 만약 일치한다면 로그인 성공 메시지를 출력합니다.
결론
bcrypt
를 사용하여 사용자의 비밀번호를 안전하게 저장하는 것은 웹 개발에서 매우 중요합니다. 이 방법은 해커로부터 사용자 정보를 보호하는 데 도움이 됩니다. 오늘 소개한 방법을 통해 여러분의 프로젝트에도 적용해 보시기 바랍니다. 안전한 웹 개발을 위해 항상 노력합시다!