SQL Injection이란?
사용자 입력이 SQL 쿼리에 그대로 연결되는 코드에서 공격자가 SQL 문법을 끼워 넣어 DB를 조작하는 공격이다.
취약한 코드 예
// ❌ 위험
const q = "SELECT * FROM users WHERE name = '" + input + "'";
// input이 "admin' OR 1=1 --" 이면 전체 조회
방어
- Prepared Statement / Parameterized Query 사용
- ORM(Prisma, Drizzle 등) 쓰면 기본적으로 안전
- 최소 권한 원칙 — 앱 DB 유저에게 DROP 권한 주지 말 것
- WAF도 보조 수단