← 목록

bcrypt를 활용한 안전한 비밀번호 저장 방법

작성: 2024년 04월 02일읽기: 약 3분

웹 개발을 하다 보면, 사용자의 비밀번호를 안전하게 보호하는 것이 얼마나 중요한지 알게 됩니다. 오늘은 여러분에게 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를 사용하여 사용자의 비밀번호를 안전하게 저장하는 것은 웹 개발에서 매우 중요합니다. 이 방법은 해커로부터 사용자 정보를 보호하는 데 도움이 됩니다. 오늘 소개한 방법을 통해 여러분의 프로젝트에도 적용해 보시기 바랍니다. 안전한 웹 개발을 위해 항상 노력합시다!