Spring Security 5

Authentication Failures Secure Coding: Brute Force·MFA·Session

인증(Authentication)은 로그인 화면 하나가 아닙니다. 계정 등록부터 비밀번호 변경, 다중 요소 인증(Multi-Factor Authentication, MFA) 등록과 복구, 세션(Session) 생성·갱신·폐기까지 이어지는 신원 수명주기입니다.로그인 요청에 Rate Limit을 추가했어도 다음 중 하나가 열려 있으면 계정은 탈취될 수 있습니다.존재하는 계정만 다른 오류 메시지나 응답 시간을 반환합니다.하나의 IP만 제한해 분산 Credential Stuffing을 놓칩니다.MFA를 켰지만 분실 복구 절차가 비밀번호만 요구합니다.로그인 후에도 인증 전 Session ID를 그대로 사용합니다.Logout은 Cookie만 지우고 Server Session을 폐기하지 않습니다.비밀번호를 바꿔도 기..

보안 2026.08.01

Cryptographic Failures Secure Coding: Password Hash·Token·Key 관리

강한 Algorithm 이름을 하나 선택했다고 암호 설계가 끝나는 것은 아닙니다. Password를 AES로 암호화하거나, JWT Signature만 확인하고 Audience를 검증하지 않거나, AES-GCM에서 같은 Key와 IV를 재사용하면 표면적으로는 암호화를 사용해도 보호 목표를 달성하지 못합니다.Cryptographic Failures는 다음과 같은 설계·구현·운영 실패를 함께 포함합니다.민감정보를 평문으로 저장하거나 전송합니다.Password에 SHA-256 같은 빠른 Hash를 사용합니다.JWT Algorithm, Issuer, Audience와 만료를 정확히 검증하지 않습니다.암호 Key를 Source, Image, 환경 공용 설정이나 Log에 노출합니다.AES-GCM의 같은 Key·IV ..

보안 2026.08.01

Security Misconfiguration Secure Coding: CORS·Debug·기본 계정·보안 Header

애플리케이션 코드에 SQL Injection이 없어도 운영 설정 하나로 내부 정보가 외부에 노출될 수 있습니다. 개발 편의를 위해 열어 둔 CORS, 상세 오류, Actuator Endpoint와 기본 계정은 배포 환경이 바뀌는 순간 공격 표면이 됩니다.Security Misconfiguration은 특정 코드 한 줄의 결함이라기보다 안전한 기본값, 환경별 차이, 배포 검증이 함께 무너진 상태입니다.모든 Origin을 허용하면서 Cookie 인증도 사용합니다.운영 API가 Stack Trace, SQL 문장과 파일 경로를 반환합니다./actuator/env, /heapdump 또는 관리 Console이 외부에 열려 있습니다.설치 직후의 관리자 계정과 Password가 그대로 남아 있습니다.Gateway에..

보안 2026.08.01

Broken Access Control Secure Coding: IDOR·권한 우회·Tenant 격리

인증에 성공했다는 사실은 모든 데이터와 기능을 사용할 수 있다는 뜻이 아닙니다. 인증(Authentication)은 요청자가 누구인지 확인하고, 인가(Authorization)는 그 주체가 이 리소스에 이 동작을 수행해도 되는지 판단합니다.Broken Access Control은 이 두 번째 판단이 빠지거나 서로 다른 경로에서 일관되지 않을 때 발생합니다.URL의 주문 ID를 다른 값으로 바꿨더니 다른 고객의 주문이 보입니다.일반 사용자가 관리자 Endpoint를 직접 호출할 수 있습니다.Tenant A 사용자가 Tenant B의 파일이나 Export 결과를 내려받습니다.수정 DTO에 role, ownerId, tenantId를 추가했더니 보호 필드가 바뀝니다.단건 조회는 막았지만 목록, 검색, 캐시와 ..

보안 2026.08.01

OWASP Top 10:2025로 시작하는 Secure Coding: SQL Injection·Brute Force·Log Forging 방어

OWASP Top 10:2025로 시작하는 Secure Coding: SQL Injection·Brute Force·Log Forging 방어보안 코딩(Secure Coding)은 위험한 문자열 몇 개를 차단하는 규칙이 아닙니다. 신뢰할 수 없는 입력이 데이터베이스 Query, 인증 판단과 운영 Log로 이동할 때 데이터가 명령으로 해석되지 않게 하고, 반복 공격을 제어하며, 남겨진 증거를 신뢰할 수 있게 만드는 개발 방식입니다.SQL Injection, Brute Force와 Log Forging은 오래 알려진 공격이지만 지금도 중요합니다.SQL Injection은 입력값이 SQL 명령의 구조를 바꾸게 합니다.Brute Force는 인증 기능을 대량의 추측 요청을 처리하는 Password Oracle로..

보안 2026.08.01