전체 글 12

XSS 취약점 대응 및 출력 인코딩 설계

1. 문제 상황 게시판 서비스에서 사용자가 입력한 내용(게시글, 댓글 등)을 화면에 출력하는 과정에서 보안 취약점이 존재했습니다.특히 사용자 입력값을 별도의 검증 없이 그대로 HTML에 렌더링하는 구조로 인해 다음과 같은 문제가 발생할 수 있었습니다.* 태그 삽입을 통한 악성 스크립트 실행 가능* HTML 태그 조작을 통한 화면 변조* 다른 사용자의 브라우저에서 의도치 않은 스크립트 실행이러한 문제는 대표적인 웹 취약점인 Cross-Site Scripting(XSS) 공격으로 이어질 수 있는 위험 요소였습니다.⸻2. 기존 동작 흐름 기존 시스템은 사용자 입력값을 그대로 저장하고 그대로 출력하는 구조였습니다.1. 사용자가 게시글 또는 댓글 작성2. 서버에서 별도의 필터링 없이 DB에 저장3. ..

Dev/Java 2026.04.30

MicroStrategy 리포트 프리로드를 통한 UX 개선 전략 (Preloading)

1. 문제 상황 게시글 목록에서 특정 항목을 클릭하면 해당 상세 정보와 함께 MicroStrategy(MSTR) 리포트를 조회하는 구조였습니다. 하지만 기존 방식에서는 다음과 같은 기술적 한계가 발생했습니다.* 게시글을 클릭할 때마다 MSTR 리포트를 새롭게 로드하며 발생하는 지연 시간* 네트워크 환경에 따른 불규칙한 로딩 속도로 인한 사용자 대기 발생* 클릭 후 화면 표시까지의 물리적 간극으로 인한 사용자 경험(UX) 저하결과적으로 사용자가 콘텐츠를 소비하기 위해 매번 수 초간의 로딩을 견뎌야 하는 구조적 결함이 있었습니다.⸻2. 기존 동작 흐름 기존의 방식은 사용자의 명시적인 액션이 일어난 후 데이터를 요청하는 흐름을 가졌습니다.1. 사용자의 게시글 클릭2. MSTR 리포트 호출 API 전..

Dev/Java 2026.04.30

[Eclipse] Java VM Arguments 설정하는 법 (Run Configurations)

1) 메뉴 열기❶ 상단 메뉴에서 Run → Run Configurations… 선택❷ 프로젝트 우클릭 → Run As → Run Configurations 2) VM arguments 입력 3) Apply → Run 스프링이 실행될 때 ‘local’ 환경 설정(profile)을 사용하도록 JVM에게 전달하는 옵션-Dspring.profiles.active=local IPv4(아이피 브이 포) 방식의 네트워크 스택 사용을 JVM에 강제하는 옵션-Djava.net.preferIPv4Stack=true📌 VM arguments가 필요한 이유1) 실행 환경마다 다르게 설정2) 코드를 수정하지 않고 동작 방식을 바꿈3) 외부 설정을 프로그램에 전달4) JVM 성능/메모리/GC 등 제어 필요5) 다양한 실행 모드..

Dev/Java 2025.11.30

[SQLD] ANSI-SPARC(앤시-스파크) 3계층 스키마 구조 (외부,개념,내부)

0. 도입 - 왜 ANSI-SPARC 3계층 구조가 필요한가?데이터베이스를 사용하는 사람마다 보는 관점이 다름 → 사용자, 설계자, 개발자.이런 차이를 정리해 혼란을 줄이기 위해 ANSI-SPARC 3계층 스키마 구조가 제안됨.핵심 키워드: 데이터 독립성(Data Independence) → 논리적 독립성, 물리적 독립성.데이터 독립성이란?한 계층의 변경이 다른 계층에 영향을 최소화하도록 설계된 원칙입니다. 이를 통해 시스템의 유연성과 유지보수성이 크게 향상됩니다.ANSI-SPARC 3계층 스키마 구조 외부 스키마 (External Schema) = 사용자별 책 목록표초등학생은 동화책 목록만 확인 가능중학생은 소설책 목록 확인 가능선생님은 모든 책 목록 확인 가능각자 자신에게 필요한 책 목록만 확인 가능..

자격증/SQLD 2025.09.30

[SQLD] 데이터 모델링 유의점 3가지

데이터베이스 설계에서 가장 중요한 단계 중 하나가 데이터 모델링(Data Modeling)입니다.하지만 모델링 과정에서 주의하지 않으면 데이터의 품질과 시스템의 안정성이 크게 흔들릴 수 있습니다.SQLD 시험에서는 이를 데이터 모델링 3대 유의사항으로 정리하여 출제합니다. 이번 글에서는 중복(Duplication), 비유연성(Inflexibility), 비일관성(Inconsistency) 세 가지를 개념·문제점·해결 방법 순서로 정리하겠습니다. 1. 중복 (Duplication, 듀플리케이션)개념: 같은 데이터를 여러 장소(DB)에 저장 → 불필요한 중복 발생문제점: 저장 공간 낭비, 데이터 불일치 위험 (한 곳은 갱신되었는데 다른 곳은 미갱신)해결: 정규화(Normalization)로 중복 최소화✓ 연..

자격증/SQLD 2025.08.17

[SpringBoot] 스프링 / 스프링부트 차이점 정리 (비유로 쉽게 이해하기)

스프링 부트(Spring Boot) 란?자바 웹 프로그램을 더욱 쉽게 빠르게 만들기 위한 도구입니다. ✓ 전통적인 개발에서는 "어떻게 설정할까?"를 고민했다면,✓ Spring Boot에서는 "무엇을 만들까?"를 고민하게 됩니다.설정에 사용할 시간을 개발에 투자하게 만들어줍니다. 이것이 바로 "개발자가 개발에만 집중할 수 있게 돕는다"는 Spring Boot의 핵심 철학입니다. • 스프링 = 수제 햄버거 가게 자영업 (모든 재료와 기계 직접 준비)• 스프링 부트 = 프랜차이즈 (노하우와 레시피 제공)전통적인 Spring Framework 방식 (개인 창업)Spring Boot 방식 (스마트 프랜차이즈)1일차: 어떤 빵을 쓸지 연구 (3시간) 2일차: 패티 레시피 개발 (5시간) 3일차:..

Dev/SpringBoot 2025.07.17

[SpringBoot] 인텔리제이 개발환경 구축 (Compact mode/컴팩트 모드)

개발하다가 작은 화면(노트북)에 갑갑함을 느낀 개발자에게 이 설정을 바칩니다."컴팩트 모드 : 여백을 줄여서 더 많은 걸 한 화면에 보여주는 모드" 로 답답함을 조금 덜어보시져 - File > Settings > Appearance & Behavior > Appearance > Compact mode 체크 컴팩트 모드: UI(유저 인터페이스)에서 공간을 덜 차지하는 모드입니다. UI elements take up less screen space→ “UI 요소들이 화면 공간을 덜 차지합니다.” ☑ Compact mode 체크 후 ⇢ Apply ⇢ OkUI를 좁게 해서 공간 절약 한 모습 1초 후 공개 툴바나 메뉴의 간격을 줄여서 공간을 절약해주고, 화면이 작은 노트북에서 효율적으로 행복 코딩 가능합니다...

Dev/SpringBoot 2025.07.14

[MacOS] 이클립스 자동완성(Content Assist) 단축키 설정 <Ctrl + Space>

⚠️ Mac에서 'Control + Space' 작동 시 → Spotlight 검색 단축키와 충돌합니다.시스템 환경설정에서 Spotlight 단축키를 변경하는 것보다 이클립스 단축키를 커스텀하는 것을 추천드립니다. 1. Mac 메뉴바에서 Eclipse → Settings... 클릭 • Mac 메뉴바에서 [Eclipse → Settings...] 클릭• 또는 단축키: [Cmd + ,] (커맨드 + 쉼표) 2. 환경설정(Preferences) 창 → [ Keys 메뉴 찾기 ]• 왼쪽 트리 메뉴에서 General > Keys 선택• 또는 상단의 검색창에 "key"라고 입력하면 빠르게 찾을 수 있습니다.3. 자동완성(Content Assist) 검색• Keys 설정 화면 상단의 검색창에 "content"라고..

Dev/Java 2025.05.01