프레임워크별 보안
WordPress·Laravel·Next.js·Spring 등, 사용하는 프레임워크마다 기본값의 위험, 가장 자주 노려지는 약점, 하드닝 절차를 정리한 프레임워크별 보안 가이드입니다.
지원 프레임워크
PHP
WordPress는 최대 점유율 = 통계적으로 가장 큰 표적입니다. 사고의 입구는 본체의 버그보다 '플러그인/테마 취약점·방치된 업데이트·약한/재사용 관리자·노출된 관리 화면(wp-admin/xmlrpc/REST 열거)'입니다. 방어 = 본체와 플러그인 업데이트 자동화·안 쓰는 플러그인/테마 삭제·관리자에 강한 비밀번호+2FA·관리 화면 노출과 로그인 시도 제한·변조 탐지와 오프라인 백업.
LaravelLaravel은 기본값이 비교적 안전한 반면, 사고의 대부분은 운영 측면에서 일어납니다. 3대 함정 = (1) .env나 시크릿 파일이 공개 디렉터리(public)에서 URL로 가져와짐, (2) 운영 환경에서 APP_DEBUG=true인 채 = 에러 화면에 환경 변수·접속 정보가 노출, (3) 인가 누락(로그인=인증은 있지만 소유자 스코프 인가가 없음 / Mass Assignment로 의도치 않은 필드 덮어쓰기). 방어 = 시크릿을 public 밖 + 권한 600·운영 환경은 debug off + 설정 캐시·Policy/Gate로 인가·$fillable 명시.
JavaScript / Node
Next.js는 기본값이 안전한 편이지만, 사고는 '서버와 클라이언트의 경계'에서 일어난다. 3대 = (1) 환경 변수의 노출(NEXT_PUBLIC_의 오용이나 서버 전용 시크릿을 클라이언트로 넘김) (2) Server Actions / Route Handlers의 인가 누락(인증은 있지만 소유자 스코프가 없음) (3) 의존성 패키지의 알려진 CVE(프레임워크 본체의 RCE 포함·가동 중인 버전으로 판단하고 즉시 패치). 방어 = 시크릿은 서버 한정·경계를 의식·Server Actions에서 인가를 매번 확인·의존성 CVE를 기계 모니터링.
ExpressExpress는 최소주의 = 기본값으로 보안 기능을 거의 갖지 않습니다. 그래서 방어는 개발자가 '직접 더하는' 것. 핵심 = (1) 보안 헤더(helmet 상당) (2) 입력 검증과 새니타이즈 (3) 인증뿐 아니라 소유자 스코프 인가 (4) 레이트 리밋(무차별 대입·DoS 대책) (5) 의존성 패키지(npm)의 CVE 모니터링 + 즉시 패치. 더해 외부 URL 취득은 SSRF 대책, 시크릿은 환경 변수에 두고 코드에 섞지 않기. 최소한의 자유와 맞바꾸어, 방어의 책임도 자신에게 있습니다.