본문 바로가기

분류 전체보기175

보안 시스템 I 01. 보안 시스템 개요보안 시스템이란?사이버 공격을 탐지하거나 차단하는 시스템주요 구성:침입차단시스템 (Firewall): 외부로부터 차단침입탐지시스템 (IDS): 공격 탐지침입방지시스템 (IPS): 탐지 + 차단가상사설망 (VPN): 외부에서도 안전한 내부망 사용네트워크 접근제어 시스템 (NAC): 인증 안 된 장치 차단02. 침입차단시스템 (방화벽, Firewall)개념외부에서 내부 네트워크로 접근하려는 불법 사용자나 위협 요소를 차단네트워크 경계에서 트래픽을 검사하고 통제함방화벽 구성 방식① 패킷 필터링 (Packet Filtering)OSI 3~4계층에서 동작 (IP, TCP/UDP 헤더 검사)IP 주소, 포트번호, 프로토콜 기반으로 통과 여부 판단장점속도가 매우 빠름 (단순 검사)사용자에게 투.. 2025. 4. 1.
배포 환경 보안 체크리스트 취약점 유형❗ HTTPS 미사용설명: HTTP는 모든 데이터가 평문으로 노출 → 로그인, 토큰, 개인정보 유출 가능방어전략:✅ Let’s Encrypt 등으로 무료 SSL 인증서 적용✅ Nginx에서 80 → 443 리디렉션 설정✅ Strict-Transport-Security 헤더 추가 (HSTS)취약점 유형❗ 쿠키 설정 미흡설명: 쿠키가 JS에서 접근 가능하거나 다른 도메인에서 전송되면 위험방어전략:✅ HttpOnly, Secure, SameSite=Strict 옵션 적용✅ 인증용 토큰은 HttpOnly 쿠키에만 저장✅ 서브도메인 간 쿠키 공유 시 SameSite=None + Secure 필요취약점 유형❗ 잘못된 CORS 설정설명: Access-Control-Allow-Origin: * + withC.. 2025. 4. 1.
Spring Boot 보안 체크리스트 취약점 유형❗ 인증 우회 (Authentication Bypass)설명: 인증 없이 보호된 API에 접근하는 공격방어전략:✅ Spring Security에서 .anyRequest().authenticated() 설정✅ @AuthenticationPrincipal로 로그인 사용자 정보 검증✅ 인증 예외 경로(/login, /signup)만 .permitAll() 처리취약점 유형❗ 권한 우회 (Authorization Bypass)설명: 일반 사용자가 관리자 기능 또는 다른 유저 데이터 접근방어전략:✅ @PreAuthorize("hasRole('ADMIN')") 또는 @Secured("ROLE_ADMIN")✅ 사용자 리소스 접근 시 if (userId != principalId) 검증✅ 모든 민감 API에 .. 2025. 4. 1.
React 보안 체크리스트 취약점 유형❗ XSS (Cross Site Scripting)설명: 사용자 입력을 DOM에 직접 렌더링하면 악성 스크립트가 실행될 수 있음방어전략:✅ dangerouslySetInnerHTML 지양 or DOMPurify 사용✅ 사용자 입력 escape✅ Content-Security-Policy(CSP) 설정취약점 유형❗ LocalStorage/SessionStorage에 민감정보 저장설명: JS로 접근 가능한 저장소 → XSS에 노출되면 토큰 탈취 가능방어전략:✅ accessToken은 React 메모리나 HttpOnly 쿠키에 저장❌ localStorage에 저장하지 않기취약점 유형❗ CSRF (Cross-Site Request Forgery)설명: 다른 사이트에서 요청을 보내도 브라우저가 쿠키를 .. 2025. 4. 1.
웹 개발자, 특히 풀스택 개발자라면 반드시 알고 있어야 할 사이버 공격 종류 웹 개발자, 특히 풀스택 개발자라면 반드시 알고 있어야 할 사이버 공격 종류보안은 “취약점을 막는 것”이 아니라 “공격당해도 피해를 최소화하는 것”1. XSS (Cross-Site Scripting)요약사용자의 브라우저에 악성 스크립트를 삽입사용자 쿠키/토큰 탈취, 리디렉션, 키로깅 등 가능예시방어dangerouslySetInnerHTML 지양입력값 escapeContent-Security-Policy 설정DOMPurify, xss 필터 사용XSS 방어 4대 수칙1. CSP (Content-Security-Policy) 설정브라우저에게 **"어디서 로드한 스크립트만 실행해!"**라고 알려주는 보안 헤더적용 방법 (예: Vite + Nginx + Netlify 등)(1) index.html 안에 추가:(.. 2025. 4. 1.
AWS에서 자주 쓰는 서비스 AWS에서 자주 쓰는 핵심 서비스 10선언제 사용하면 좋은가EC2가상 서버 (Linux, Windows)Spring, Node, Django 백엔드 직접 배포하고 싶을 때S3파일 저장소 (이미지, PDF 등)이미지 업로드, 정적 웹사이트 호스팅Lambda서버리스 함수 실행트래픽 적고 이벤트 기반 동작 (예: 이미지 리사이즈, 슬랙 알림)RDS관리형 관계형 DB (MySQL, PostgreSQL 등)JPA나 JDBC로 DB 연결할 때DynamoDBNoSQL DB실시간 분석, 캐시성 데이터, 유연한 스키마CloudFrontCDN전 세계 빠른 정적 파일 전송 (S3 + CloudFront 조합 많이 씀)API GatewayAPI 엔드포인트 제공Lambda + API 서버 구성할 때IAM사용자 & 권한 관리서비.. 2025. 3. 31.
Swagger와 API 명세 1. Swagger / OpenAPI (가장 많이 사용됨)Swagger란?API 명세를 자동 생성해주는 도구OpenAPI 스펙을 바탕으로 UI를 통해 확인하고 테스트 가능Spring Boot 연동 방법implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.1.0'// http://localhost:8080/swagger-ui/index.html 에서 확인 가능장점자동 문서화컨트롤러, DTO에 붙인 @Operation, @Parameter 등으로 자동 생성UI 제공Swagger UI에서 API 직접 테스트 가능OpenAPI 3.0 스펙 지원다른 툴과 연동 쉬움 (Postman, Notion 등)예시@Operation(summary = "회원.. 2025. 3. 31.
Spring Boot Test 관련 (JUnit, Mockito, AssertJ,Spring Boot Test, Testcontainers ) 1. JUnit (Java Unit Test의 표준)버전JUnit 4, 5(Jupiter) 두 가지가 존재 (요즘은 5 주력)용도단위 테스트, 통합 테스트 등 Java 테스트 전반대표 어노테이션@Test, @BeforeEach, @AfterEach, @Nested, @DisplayName 등예시 (JUnit 5)@DisplayName("간단한 더하기 테스트")@Testvoid addTest() { int sum = calculator.add(2, 3); assertEquals(5, sum);}✅ 2. Mockito (Mock 객체 생성)가짜 객체(Mock) 만들어서 서비스, 컨트롤러 단위 테스트할 때 사용DB, 외부 API 없이도 테스트 가능@Mock, @InjectMocks, when().t.. 2025. 3. 31.
Optional<T> 1. Optional이란?null을 직접 다루지 않고,"값이 있을 수도, 없을 수도 있는 객체"를 감싸는 컨테이너 클래스Optional은 null-safe한 값을 표현하는 도구리턴 타입에 사용하되, 파라미터/필드에는 되도록 쓰지 말기orElseThrow, map, filter, ifPresent 잘 쓰면 코드 깔끔해짐Optional name = Optional.of("Mars");Optional empty = Optional.empty();2. 왜 쓰는가?NullPointerException 방지"null 체크"를 명시적으로 강제리턴값이 "있을 수도/없을 수도" 있는 경우 문서화 효과예전 방식User user = repository.findByEmail(email);if (user != null) { ... 2025. 3. 31.