spring boot 12

Exceptional Conditions Secure Coding: Fail Closed·Rollback·안전한 오류 응답

정상 경로가 안전하다는 사실만으로 시스템이 안전해지지는 않습니다. Database Timeout, 권한 Service 장애, 예상하지 못한 Status Code, Disk 부족과 Null 값처럼 정상 전제를 깨는 상황에서 시스템이 어떤 상태를 남기고 무엇을 허용하는지가 실제 보안 경계를 결정합니다.이 글은 2026년 8월 기준 OWASP(Open Worldwide Application Security Project, 오픈 월드와이드 애플리케이션 보안 프로젝트) Top 10:2025 A10 Mishandling of Exceptional Conditions를 바탕으로 Java 21·Spring Boot 3 환경의 합성 예제를 설명합니다. 실제 고객, 계정, 거래, 내부 URL, 운영 임계값과 장애 기록은 ..

보안 2026.08.01

Security Logging & Alerting Secure Coding: Log Forging·민감정보·탐지

공격을 차단하는 코드가 있어도 우회 시도를 기록하지 않으면 다음 공격을 알아채기 어렵습니다. Log를 남겨도 아무도 보지 않거나 Alert가 담당자에게 도착하지 않으면 대응은 시작되지 않습니다. Alert가 도착해도 무엇을 확인하고 차단해야 하는지 Playbook이 없으면 중요한 시간이 다시 사라집니다.이 글은 2026년 8월 기준 OWASP(Open Worldwide Application Security Project, 오픈 월드와이드 애플리케이션 보안 프로젝트) Top 10:2025 A09 Security Logging and Alerting Failures와 OWASP Logging Cheat Sheet, NIST(National Institute of Standards and Technology,..

보안 2026.08.01

Insecure Design Secure Coding: Abuse Case·Rate Limit·업무 흐름 우회

Insecure Design은 보안 Header 하나를 빠뜨리거나 조건문 하나를 잘못 작성한 문제와 다릅니다. 필요한 통제 자체가 요구사항과 설계에 없으면 코드를 정확히 구현해도 시스템은 안전하지 않습니다.예를 들어 다음 코드는 모두 정상 동작할 수 있습니다.결제 완료 API가 요청되면 주문을 완료 상태로 바꿉니다.쿠폰 적용 API가 유효한 쿠폰의 할인액을 반환합니다.초대 API가 입력된 주소로 초대장을 보냅니다.보고서 API가 요청된 기간의 데이터를 집계합니다.하지만 결제 증명 없이 완료 API를 호출할 수 있고, 같은 쿠폰을 동시에 두 번 쓸 수 있고, 초대 횟수와 보고서 범위에 한도가 없다면 문제는 구현 Bug 이전에 누락된 보안 요구사항과 업무 불변식입니다.이 글은 2026년 8월 기준 OWASP..

보안 2026.08.01

Injection Secure Coding 심화: SQL·NoSQL·Command·Template Injection

Injection은 특수문자 몇 개를 막는 문제가 아닙니다. 외부에서 온 Data가 Database, Shell, Template Engine 같은 Interpreter의 구조나 명령으로 재해석되는 경로가 생기면 발생합니다.같은 입력도 어디에 도달하느냐에 따라 위험이 달라집니다.검색어가 Prepared Statement의 값으로 Bind되면 SQL Data입니다.같은 검색어가 Column 이름이나 ORDER BY 문자열에 연결되면 SQL 구조가 됩니다.JSON Object를 그대로 MongoDB Filter로 넘기면 Client가 Query Operator를 선택할 수 있습니다.문자열 배열로 Process를 실행해도 공격자가 Option을 추가할 수 있으면 Argument Injection이 남습니다.안..

보안 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

고객 Mobile·Web에서 Server SDK와 Private API까지: End-to-End 통합 예제

운영 중인 서비스에 API 서버, 웹 페이지와 모바일 앱이 이미 있어도 고객사가 원하는 화면과 업무 흐름은 서로 다를 수 있습니다. 이때 고객별 앱과 웹을 모두 대신 개발하면 변경 속도와 운영 책임이 한곳에 집중됩니다.다른 선택은 고객사가 자신의 UX를 구현하도록 Android Kotlin, iOS Swift와 React JavaScript SDK를 제공하는 것입니다. 다만 핵심 API가 프라이빗 망에 있다면 Mobile·Web SDK가 그 API를 직접 호출하게 만들 수 없습니다. 고객 채널은 고객사 Backend for Frontend(BFF) 또는 Channel API를 호출하고, 그 서버가 Java Server SDK를 통해 프라이빗 API와 통신해야 합니다.이 글은 앞서 다룬 SDK 아키텍처, ..

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

프라이빗 API를 연결하는 Java Server SDK 설계: 모듈·Client 수명·전송 계층

앞선 글에서는 고객사가 Android·iOS 앱과 React 웹을 원하는 형태로 구현하면서도, 프라이빗 망의 API 서버를 직접 노출하지 않는 멀티플랫폼 SDK 구조를 살펴봤습니다.이 구조에서 Java Server SDK는 단순한 HTTP 호출 편의 라이브러리가 아닙니다. 고객사 서버가 프라이빗 API를 사용할 때 필요한 인증, 테넌트 문맥, 오류 변환, 재시도, 멱등성, 타임아웃과 관측 정책을 한곳에서 적용하는 신뢰 경계의 실행 구성요소입니다.구체적인 네트워크 기술은 배포 환경마다 달라질 수 있습니다. 중요한 원칙은 모바일 앱과 브라우저가 프라이빗 Endpoint나 서버 자격 증명을 직접 갖지 않고, 고객사 서버 안의 Java SDK가 통제된 경로를 통해 호출한다는 점입니다.이 글은 이 역할을 수행하는..

프라이빗 API를 보호하는 멀티플랫폼 SDK 아키텍처: Java·Kotlin·Swift·React 계약 설계

이미 운영 중인 API 서버와 웹 프런트 페이지, 모바일 앱이 있다고 가정해 보겠습니다. 표준 화면만 제공할 때는 이 세 구성요소만으로도 충분하지만, 고객사마다 업무 흐름·브랜드·화면 구성이 달라지면 하나의 UI를 그대로 제공하는 방식에는 한계가 생깁니다.이 문제를 해결하기 위해 고객사가 자신의 요구에 맞는 채널을 구현할 수 있도록 다음 SDK를 제공할 수 있습니다.Android 애플리케이션을 위한 Kotlin Mobile SDKiOS 애플리케이션을 위한 Swift Mobile SDK고객 맞춤형 웹을 위한 React·JavaScript Front SDK고객사 서버 환경을 위한 Java Server SDK와 Spring Boot Starter여기에는 중요한 네트워크 제약이 하나 더 있습니다. 핵심 API ..