**안전한 코딩(secure coding)**은 공격에 저항하고 데이터를 보호하는 코드를 작성하는 것을 의미합니다 — 흔한 취약점을 예방하는 관행을 따르는 것입니다. 기본을 이해하면 개발자가 보안을 나중에 덧붙이는 대신 처음부터 내재화할 수 있습니다.
핵심적인 안전한 코딩 관행
✓ 모든 입력을 VALIDATE(사용자/외부 입력을 절대 신뢰하지 마라); 가능하면 allowlist
✓ PARAMETERIZED query 사용(SQL injection 방지); 출력 ESCAPE(XSS 방지)
✓ 제대로 AUTHENTICATE와 AUTHORIZE(신원 검증; 서버 측 권한 확인)
✓ 민감한 데이터를 신중히 HANDLE — password hash, 민감 데이터 encrypt, HTTPS 사용
✓ 코드에 SECRETS(키, password)를 HARDCODE하지 마라 → env var / secrets manager 사용
✓ SECURE DEFAULTS 사용; 안전하게 실패(오류가 데이터를 노출하거나 접근을 허용해선 안 됨)
흔한 실수 피하기
✗ 사용자 입력 / 클라이언트 측 검사 신뢰(SERVER에서 검증하라)
✗ 오류/로그에 민감 정보 노출(스택 트레이스, secret, PII)
✗ 오래되거나 취약한 DEPENDENCIES 사용(최신 유지; 스캔하라)
✗ 자체 CRYPTO 구현(맞춤 알고리즘이 아닌 검증된 라이브러리/표준 사용)
✗ 지나치게 광범위한 권한(LEAST PRIVILEGE 적용)
