Spring Security 내부 구조 - 2 (SecurityFilterChain)
·
Backend/Spring Security
이전 글: 2025.06.30 - [Backend/Spring Security] - Spring Security 내부 구조 -1 Spring Security 내부 구조 -1스프링 시큐리티 공식 문서: https://docs.spring.io/spring-security/reference/servlet/architecture.html Spring Security 동작 원리시큐리티 의존성이 없는 경우, 클라이언트의 요청은 서버 컴퓨터 WAS의 필터들을 통과0woy.tistory.comSecurityFilterChain스프링 시큐리티 필터들의 묶음으로 실제 시큐리티 로직이 처리되는 부분추후 자세히 작성 예정 커스텀 SecurityFilterChain 등록스프링 시큐리티 의존성을 추가하면 `DefaultSecu..
Spring Security 내부 구조 -1 (Spring Security 동작 원리)
·
Backend/Spring Security
스프링 시큐리티 공식 문서: https://docs.spring.io/spring-security/reference/servlet/architecture.html 다음 글 2025.06.30 - [Backend/Spring Security] - Spring Security 내부 구조 - 2 (SecurityFilterChain)Spring Security 동작 원리시큐리티 의존성이 없는 경우, 클라이언트의 요청은 서버 컴퓨터 WAS의 필터들을 통과한 뒤, 스프링 컨테이너 컨트롤러에 도달컨트롤러 앞단에 여러 과정이 존재하나, 시큐리티 과정에서는 중요치 않으므로 생략..만일 사용자의 요청을 감시하려면? = 시큐리티 의존성 추가스프링 시큐리티가 사용자의 요청을 감시 & 통제하는 지점은 `WAS의 필터`단.👉..
SQL Injection
·
Backend/DB
SQL Injection은 웹 애플리케이션 보안에서 가장 흔하고 치명적인 취약점 중 하나.원리부터 PreparedStatement, ORM을 통한 보호 방법까지 설명하려 함1. SQL Injection 원리SQL Injection은 웹 애플리케이션의 `입력 폼`이나 `URL 파라미터 ` 등을 통해 악의적인 SQL 구문(Query)을 주입(Injection)하여, 데이터베이스를 비정상적으로 조작하거나 민감한 정보를 탈취하는 공격 기법핵심 원리: 사용자 입력이 SQL 쿼리에 직접 결합애플리케이션이 사용자로부터 입력받은 값을 아무런 검증이나 처리 없이 SQL 쿼리 문자열에 직접 삽입하여 실행할 때 발생SELECT * FROM users WHERE username = '사용자_입력_ID' AND password..
트랜잭션 분산 환경 처리
·
Backend/DB
트랜잭션 분산 환경 처리단일 DB 환경에서의 트랜잭션 개념(ACID 속성)을 여러 개의 독립적인 DB나 서버에 걸쳐 확장하는 것을 의미함단일 DB에서는 ACID 속성을 DBMS가 보장해 주지만, 분산 환경에서는 이 보장이 훨씬 복잡해지거나 불가능할 수 있음❓ ACID 속성- Atomatic (원자성): 트랜잭션 내의 모든 연산이 완전히 성공하거나, 아니면 완전히 실패- Consistency (일관성): 트랜잭션이 성공적으로 완료되면, DB는 항상 일관된 상태 유지- Isolation (고립성): 여러 트랜잭션 동시 실행 시, 각 트랜잭션은 독립적으로 실행- Durability (지속성): 트랜잭션이 성공적으로 커밋되면, 변경된 모든 데이터는 영구적으로 DB에 반영단일 트랜잭션 / 분산 트랜잭션단일 트랜잭..
DB 분산 구조
·
Backend/DB
DB 분산 구조DB 분산 구조는 말 그대로 DB를 여러 개의 서버에 나누어 저장하고 관리하는 시스템을 의미함단일 DB 시스템이 가질 수 있는 한계 (성능, 용량, 가용성 등)을 극복하고, 더욱 확장성 있고 안정적인 서비스를 제공하기 위해 도입된 개념DB 분산 구조를 사용하는 이유단일 데이터 베이스는 아래와 같은 한계를 가짐성능 한계모든 R/W 요청이 하나의 서버로 집중되면, 서버의 CPU, 메모리, I/O 자원이 고갈되어 처리 속도가 급격히 느려짐데이터 양이 방대해지면 인덱스를 사용해도 쿼리 속도가 저하됨용량 한계하나의 서버에 저장할 수 있는 데이터 양에는 물리적 한계 존재데이터가 계속 증가하면, 언젠가는 공간 부족가용성 문제단일 서버에 장애가 발생하면 전체 서비스가 중단될 수 있음DB 분산 구조는 위와..
Spring Test 관련 애너테이션
·
Backend/Spring
실습 중 위와 같은 테스트 코드를 작성하는데 사용한 어노테이션을 알아보려 한다.import lombok.extern.log4j.Log4j2;import org.junit.jupiter.api.DisplayName;import org.junit.jupiter.api.Test;import org.junit.jupiter.api.extension.ExtendWith;import org.scoula.board.domain.BoardVO;import org.scoula.board.mapper.BoardMapper;import org.scoula.config.Rootconfig;import org.springframework.beans.factory.annotation.Autowired;import org.spri..
JDBC, Hikari & Mybatis
·
Backend/JAVA
이전 글: 2025.05.21 - [Backend/JAVA] - JDBC JDBCJDBC (Java Database Connectivity)자바에서 DB에 접근하기 위한 표준 API즉, 자바 애플리케이션이 DBMS 종류와 상관 없이 동일하게 사용할 수 있는 클래스와 인터페이스로 구성JDBC API (java.sql 패키지에 포함)0woy.tistory.comJDBC 요약JDBC(Java Database Connectivity)는 애플리케이션이 다양한 RDB와 통신할 수 있도록 하는 `JAVA API`DB에 접속하고, SQL 쿼리를 실행하며, 결과를 가져오는 등의 작업을 수행하기 위한 표준 인터페이스를 제공주요 역할드라이버 로딩: 특정 DB 벤더가 제공하는 JDBC 드라이버 로드 (예: MySQL JDBC..
Redis -2
·
Backend/DB
여러 사용자가 동시에 같은 데이터를 수정하려고 할 때 경쟁 조건이 발생하는 경우 Redis는 어떻게 대처할까?Redis는 경쟁 조건을 방지하기 위해 두 가지 접근 방식인 Optimistic Lock, Pessimistic Lock 을 사용한다.시나리오전략이유재고 감소, 좋아요 수 증가Optimistic충돌 적고 성능 중요결제, 티켓팅, 중복 요청 방지Pessimistic무조건 1개만 처리해야 함Optimistic Lock (낙관적 락)문제가 발생하지 않을 것이라는 낙관적인 개념으로동시 접근을 허용하되, 마지막에 충돌이 발생하면 롤백하는 방식이다.Redis에서는 `WATCH`, `MULTI`, `EXEC` 명령어를 사용하여 구현한다.특징항목설명장점락을 사용하지 않아 빠르고 병렬 처리에 유리단점충돌이 많으..