민감한 데이터가 암호화 없이 저장·전송되거나, 약한 알고리즘(MD5, SHA1)을 사용하는 취약점입니다.
// ❌ 취약: 평문 저장
run('INSERT INTO users (username, password) VALUES (?, ?)',
[username, password]); // password = "test1234"
// ❌ 취약: MD5 사용 (alice의 password)
// 5f4dcc3b5aa765d61d8327deb882cf99 → "password"
// ✅ 안전: bcrypt 해싱
const bcrypt = require('bcrypt');
const hash = await bcrypt.hash(password, 12);
run('INSERT INTO users (username, password) VALUES (?, ?)',
[username, hash]);
// ✅ 비밀번호 변경 시 현재 비밀번호 확인
const valid = await bcrypt.compare(currentPw, user.password);
if (!valid) return res.status(400).json({ error: '현재 비밀번호 불일치' });