Notice
Recent Posts
Recent Comments
Link
개발 무지렁이
[Spring Boot] 쿠키(Cookie)와 세션(Session), CSRF 본문
쿠키 🍘
-> 사용자를 구별하고 싶다
❗ 웹서버는 기억력이 없다
-> 클라이언트 최초 접속 시, 서버가 쿠키 🍘 발행 (커피 도장 쿠폰 ☕)
세션
-> 서버의 세션저장소에 클라이언트별로 공간 생성 (= 세션 Session)
-> 이 공간에 정보 저장
-> 쿠키 🍘에는 세션ID가 들어있다 (JSESSIOINID)
❗ 클라이언트가 세션ID를 조작하면?
-> 규칙이 없게 길게 만들면 된다.
ex.
세션저장
@GetMapping("/saveSession/{name}/{value}")
@ResponseBody
public String saveSession(@PathVariable String name, @PathVariable String value, HttpServletRequest req) {
HttpSession session = req.getSession(); // JSESSIONID in 쿠키 in 웹브라우저
session.setAttribute(name, value);
return "세션변수 %s의 값이 %s(으)로 설정되었습니다.".formatted(name, value);
}
세션가져오기
@GetMapping("/getSession/{name}")
@ResponseBody
public String saveSession(@PathVariable String name, HttpServletRequest req) {
HttpSession session = req.getSession(); // JSESSIONID in 쿠키 in 웹브라우저
String value = (String)session.getAttribute(name);
return "세션변수 %s의 값이 %s입니다".formatted(name, value);
}
CSRF(Cross Site Request Forgery)
CSRF 토큰
: 내부에서 발생한 요청임을 체크하는 수단
: '스프링 시큐리티'가 'CSRF 토큰 값'을 '세션'을 통해 발행하고
폼 전송 시 해당 토큰을 전송해서, 실제 웹페이지에서 작성된 데이터인지를 검증(구별)한다.
'Backend > 스프링부트' 카테고리의 다른 글
[Spring Boot] File 객체와 MultipartFile 인터페이스 (0) | 2022.11.26 |
---|---|
[Spring Boot] 기본세팅 (0) | 2022.11.26 |
[Spring Boot] 리포지터리 CRUD 메서드 테스트 (0) | 2022.11.25 |
[Spring Boot] ORM의 표준스펙 JPA 및 엔티티(Entity) (0) | 2022.11.25 |
[Spring Boot] 스프링부트 프로젝트의 구조와 컨트롤러 (0) | 2022.11.25 |
Comments