Node 앱 보안은 흔한 웹 취약점(OWASP Top 10)을 여러 계층 — 입력 처리, 인증, 의존성, 설정 — 에서 방어하는 것을 의미합니다. 보안은 단일 해결책이 아니라 계층적(심층 방어, defense in depth)입니다.
1. 모든 입력을 검증하고 정화(sanitize)
js
{ z } ;
schema = z.({ : z.().(), : z.().() });
data = schema.(req.);
Node 앱 보안은 흔한 웹 취약점(OWASP Top 10)을 여러 계층 — 입력 처리, 인증, 의존성, 설정 — 에서 방어하는 것을 의미합니다. 보안은 단일 해결책이 아니라 계층적(심층 방어, defense in depth)입니다.
{ z } ;
schema = z.({ : z.().(), : z.().() });
data = schema.(req.);
// ❌ string concatenation → SQL injection
db.query(`SELECT * FROM users WHERE id = ${req.params.id}`);
// ✅ parameterized queries — input is data, never executable SQL
db.query("SELECT * FROM users WHERE id = $1", [req.params.id]);
항상 파라미터화된 쿼리 / ORM을 사용하고, 사용자 입력으로 명령을 만들지 마세요(child_process의 명령어 주입 참고).
✓ Hash passwords with bcrypt/argon2/scrypt (slow + salted) — never plain/SHA
✓ Store secrets in env vars, never in code/git
✓ Use httpOnly, secure, sameSite cookies for sessions (XSS-resistant)
✓ Sign/verify JWTs properly; keep tokens short-lived
import helmet from "helmet";
import rateLimit from "express-rate-limit";
app.use(helmet()); // sets secure HTTP headers (CSP, HSTS, X-Frame-Options, etc.)
app.use(rateLimit({ windowMs: 60_000, max: 100 })); // throttle abuse/brute-force
helmet은 보호 헤더를 추가하고, 속도 제한은 무차별 대입과 DoS를 방어합니다.
npm audit # check installed packages for known vulnerabilities
npm audit fix
# + keep deps updated; review postinstall scripts; pin versions via the lockfile
대부분의 Node 코드는 서드파티 패키지입니다. 취약한 의존성은 주요 공격 벡터입니다. 정기적으로 감사하고 업데이트하세요.
✓ Use HTTPS (TLS) everywhere; redirect HTTP → HTTPS
✓ Don't leak error details/stack traces to clients in production
✓ Escape output to prevent XSS (frameworks usually do this)
✓ Implement proper authorization (not just authentication) — check permissions per action
✓ CORS configured to an allowlist, not "*" for credentialed APIs
✓ Limit request body size to prevent payload-based DoS
웹 앱은 끊임없는 표적이며, Node 앱은 웹 취약점의 전체 범위 — 주입, 깨진 인증, XSS, 취약한 의존성, 잘못된 설정 — 에 노출됩니다.
어떤 단일 조치도 충분하지 않습니다. 보안은 계층적입니다. 입력 검증, 쿼리 파라미터화, 비밀번호 올바른 해싱, 비밀값 안전한 관리, 보호 헤더 설정, 속도 제한, 의존성 감사, HTTPS 사용입니다.
이러한 관행(과 그 뒤의 OWASP 위험)을 이해하는 것은 프로덕션 Node 서비스를 구축하는 누구에게나 필수적인 책임입니다. 간과된 단 하나의 계층(주입 하나, 유출된 비밀값 하나, 패치되지 않은 의존성 하나)이 전체 시스템을 손상시킬 수 있습니다.