Search

웹 애플리케이션에서 사용자의 비밀번호를 안전하게 저장하기

카테고리
Javascript
태그
Web
비밀번호
생성 일시
2023/02/14
상황: 웹 애플리케이션에서 사용자의 비밀번호를 데이터베이스에 저장할 때, 보안이 취약한 방식으로 저장하면 해커들에게 노출될 위험이 있습니다. 비밀번호를 안전하게 저장하는 방법이 필요합니다.
해결방안: 사용자의 비밀번호를 해시(hash)하고 솔트(salt)를 추가하여 안전하게 저장합니다.
1.
해시 및 솔트 라이브러리 설치 Node.js 환경에서 bcrypt 라이브러리를 사용하여 비밀번호를 해시하고 솔트를 추가할 수 있습니다. 먼저 bcrypt 라이브러리를 설치합니다.
bashCopy code npm install bcrypt
Plain Text
복사
2.
비밀번호 해시 및 솔트 코드 작성 bcrypt 라이브러리를 사용하여 비밀번호를 해시하고 솔트를 추가하는 코드를 작성합니다.
javascriptCopy code const bcrypt = require('bcrypt'); async function hashPassword(password) { const saltRounds = 10; const hashedPassword = await bcrypt.hash(password, saltRounds); return hashedPassword; } async function checkPassword(password, hashedPassword) { const isValid = await bcrypt.compare(password, hashedPassword); return isValid; }
JavaScript
복사
3.
사용자 비밀번호 저장 및 검증 사용자가 회원 가입을 할 때, 비밀번호를 해시하고 솔트를 추가한 뒤 데이터베이스에 저장합니다. 사용자가 로그인을 할 때, 입력한 비밀번호와 저장된 해시된 비밀번호를 비교하여 검증합니다.
javascriptCopy code const express = require('express'); const app = express(); app.use(express.json()); app.post('/register', async (req, res) => { const { username, password } = req.body; const hashedPassword = await hashPassword(password); // 데이터베이스에 사용자 정보와 해시된 비밀번호 저장 }); app.post('/login', async (req, res) => { const { username, password } = req.body; // 데이터베이스에서 사용자 정보와 해시된 비밀번호 조회 const isValid = await checkPassword(password, hashedPassword); if (isValid) { // 로그인 성공 처리 } else { // 로그인 실패 처리 } });
JavaScript
복사
이러한 방법으로 사용자의 비밀번호를 해시하고 솔트를 추가하여 데이터베이스에 안전하게 저장할 수 있으며, 로그인 시 해시된 비밀번호를 사용하여 검증할 수 있습니다. 이를 통해 웹 애플리케이션의 보안을 강화할 수 있습니다.