java 5

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

프라이빗 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 ..

기업용 AI 백엔드 설계: Java Security Gateway와 Python AI Orchestrator의 책임 분리

기업용 AI 서비스를 설계할 때 자주 나오는 질문이 있습니다.기존 Java 백엔드 안에 AI 기능을 넣어야 할까, Python 서비스를 따로 만들어야 할까?이 질문을 언어 선택 문제로만 보면 답을 찾기 어렵습니다. 중요한 것은 Java와 Python 중 어느 쪽이 더 좋은지가 아니라, 외부 요청을 통제하는 책임과 AI 실행을 조율하는 책임을 어디에서 나눌 것인가입니다.인증, 테넌트 정책과 기존 업무 API는 안정성과 일관성이 중요합니다. 반면 Agent, RAG, 모델 SDK와 Prompt는 상대적으로 빠르게 바뀝니다. 두 영역을 하나의 배포 단위에 넣으면 시작은 단순하지만, 시간이 지날수록 보안 변경과 AI 실험의 배포 주기가 서로 얽힐 수 있습니다.책임을 분리한 기준 구조는 다음과 같습니다.Web ·..