스프링 4

CSRF(Cross-Site Request Forgery) 공격이란?

CSRF(사이트 간 요청위조)는 공격자가 사용자를 속여서 사용자가 의도하지 않은 요청을 특정 웹 애플리케이션으로 전송하도록 만드는 웹 보안 공격이다.즉, 사용자가 웹사이트에 로그인한 상태에서, 공격자가 사용자 모르게 요청을 보내도록 유도하여 피해를 입히는 방식이다. 1. CSRF 공격의 원리CSRF 공격은 인증된 사용자의 세션을 악용하여 원하지 않는 요청을 서버로 보내는 것이 핵심이다. CSRF 공격 과정사용자 A웹사이트(https://bank.com)에 로그인하고 세션을 유지한 상태.공격자가 악성 웹사이트(B 사이트)를 운영하며, 해당 사이트에 CSRF 공격을 수행할 코드가 포함됨.사용자가 B 사이트를 방문하면, https:/bank.com으로 자동으로 특정 요청을 보내는 스크립트가 실행됨.https:..

@EventListener 어노테이션이란?

@EventListener란?Spring의 ApplicationEvent를 기반으로 동작하며, 특정 이벤트가 발생하면 자동으로 해당 이벤트를 처리하는 메서드를 실행한다.비동기 이벤트 처리(@Async)와 함께 사용가능하여, 비동기 방식으로 이벤트를 처리할 수도 있다.여러 개의 이벤트 타입을 감지할 수 있다. 사용법1. 이벤트 클래스 생성먼저, 이벤트를 정의하는 클래스를 만든다.public class UserCreatedEvent { private final String username; public UserCreatedEvent(String username) { this.username = username; } public String getUsername() { ..

스프링 2025.02.12

@Entity에 대한 @OneToMany 매핑에서 컬렉션의 clear()

@Entity에 대한 @OneToMany 매핑에서 컬렉션의 clear() 메서드를 호출하면 삭제 과정이 효율적이지는 않다. 하이버네이트의 경우 @Entity의 컬렉션 객체의 clear() 메서드를 호출하면 select 쿼리로 대상 엔티티를 로딩하고, 각 개별 엔티티에 대해 delete 쿼리를 실행한다. 즉 컬렉션에 보관 되어 있던 엔티티의 개수가 4개이면 엔티티 목록을 가져오기 위한 한 번의 select 쿼리와 각 엔티티를 삭제하기 위한 네 번의 delete쿼리를 실행한다. 변경 빈도가 낮으면 괜찮지만 빈도가 높으면 전체 서비스 성능에 문제가 될 수 있다. 하이버네이트는 @Embeddable 타입에 대한 컬렉션의 clear() 메서드를 호출하면 컬렉션에 속한 객체를 로딩하지 않고 한 번의 delete 쿼..

스프링 2025.02.05

@Access란?

@Access 어노테이션의 역할JPA에서 엔티티 클래스의 필드를 DB 컬럼과 매핑할 때, 필드 접근 방식과 프로퍼티 접근 방식 두 가지 방법이 있다. @Access 어노테이션을 사용하면 해당 엔티티가 어떤 방식으로 데이터에 접근할 것인지 명시적으로 지정할 수 있다.@Access(AccessType.FIELD) // 필드 접근 방식@Access(AccessType.PROPERTY) // 프로퍼티 접근 방식   1. 필드 접근 방식(AccessType.FIELD) - 객체의 필드(멤버 변수)에 직접 접근하여 값을 설정하고 가져온다. - 필드에 @Column,@Id 등의 JPA 어노테이션을 직접 선언해야 한다. - getter/setter 메서드를 거치지 않고 직접 필드에 접근한다.import jakart..

스프링 2025.02.05