1. 개념
    1. 공격자가 사용자의 인증된 세션을 악용해서, 사용자가 의도하지 않은 요청을 서버에 보내게 만드는 공격
  2. 특징
    1. 세션 기반 인증에서 주로 발생
    2. 공격자는 쿠키 자체를 훔치지 않아도 됨 → 브라우저가 자동으로 쿠키를 보여줌
    3. Get/POST 모두 가능하지만, POST/상태 변경 요청에서 더 위험
  3. 핵심
    1. 사용자가 이미 로그인된 상태라는 점을 악용함
  4. 동작 원리
    1. 사용자가 은행 사이트에 로그인
    2. 세션 쿠키가 브라우저에 저장됨
    3. 공격자가 악성 사이트를 방문하도록 유도 → 공격자 페이지에서 <img>나 <form>등을 이용해 은행 사이트로 요청 전송
    4. 브라우저는 쿠키를 자동으로 첨부 → 서버는 정상적인 요청으로 처리
    5. 결과는 공격자가 의도한 거래나 정보 변경 발생
  5. 방어 방법
  6. CSRF 토큰 사용
    1. 서버가 랜덤 토큰을 발급 → 폼/요청 헤더에 포함 → 서버에서 검증
    2. 요청을 변조한 공격자는 토큰을 알 수 없기 때문에 차단 가능
  7. SameSite 쿠키
    1. SameSite-lan 또는 Strict 설정 → 외부 사이트에서 쿠키 자동 전송 방지
  8. Custom Header
    1. AJAX 요청 시, X-Requested-With 같은 헤더를 서버에서 검증
  9. JWT/토큰 기반 인증
    1. 세션 쿠키를 사용하지 않고 Authorization 헤더로 전달 → 브라우저가 자동 첨부하지 않음 → CSRF위험 감소

@Id

  1. 해당 필드를 엔티터의 기본 키로 지정
  2. RDB 테이블에서 PRIMARY KEY 역할
  3. 엔티티는 반드시 하나 이상의 @Id가 필요
  4. 특징
    1. PK 지정, 엔터티 구분 기준
  5. 장점
    1. JPA가 객체 테이블 매핑 시 엔티티 식별 가능
  6. 단점
    1. 없으면 엔티티 저장 불가 (필수임)
@Entity
public class User{
	@Id
	private Long id; // PK
	private String name;
}