본문 바로가기

프로젝트/텀블벅 클론 코딩6

[ Spring / 사용자 인가 ] 2. 잃어버린 set-cookie를 찾아서 앞선 게시글에선 사용자 권한 유지를 위해 Session을 생성 해 주었다. 서버에서는 JSESSIONID에 대한 쿠키를 생성해 주었을 테지만, 응답에서는 set-cookie 헤더를 찾아볼 수 없었다. HTTPS 통신 조금 더 찾아보니 쿠키를 사용하기 위해서는 HTTPS 통신을 사용해야 했다. 라고 적으면 너무 결과적인 내용만 말하는 것 같으니 조금 더 자세히 알아보자. same-Site 문제 sameSite 속성은 보안을 위해 사용하는 쿠키의 속성중 하나로, 특정 상황에서 쿠키를 클라이언트로 전송할 수 있는지 제한하기 위한 속성이다. sameSite = Strict 동일한 사이트에서의 요청에만 쿠키를 전송한다. CSRF 공격을 방지할 수 있음 sameSite = Lax 기본적으로 Strict와 같으나, .. 2023. 6. 6.
[ Spring / 사용자 인가 ] 1. 사용자 세션 부여하기 일반적으로 로그인이 필요한 웹 서비스의 경우 사용자의 요청에 대한 인증/인가를 구현해 둔다. 이번 단계에서는 그 중에서도 사용자의 요청에 대한 인가(Authorization)를 구현한 과정을 정리한다. 서론 간단하게 말하자면, 인증은 로그인을 하는 과정에 해당한다. 사용자가 입력한 아이디, 비밀번호를 이용해 해당 사용자가 회원임을 확인하는 과정이다. 그리고, 인가는 로그인 되어 있는 회원의 권한을 유지시켜 주는 과정과 관련이 있다. 일반적으로 특정 행동에 대해 사용자의 계정 권한이 필요한 웹 서비스의 경우 사용자의 권한을 유지시켜 줄 필요가 있다. 만약 사용자의 권한이 유지가 되지 않는다면, 우리가 어떤 웹 서비스에 이미 로그인을 했더라도 글 작성을 하는 등의 사용자 권한이 필요한 동작을 할 때 다시 우.. 2023. 6. 6.
[Java] Java.util.Date 객체 사용 시 문제점 문제 상황 분명 나는 java.util.Date를 사용해서 2023년 3월 5일의 날짜를 생성하는데, 어느 시점에 가서는 이 날짜가 3000년대의 특정 년도로 값이 바뀌어 있는 경험을 몇 번 했다. 이 문제를 조금 더 집중 해 보기로 했다. 아래는 내가 실행한 코드와, 서버에서 확인한 MySQL 로그의 일부이다. 실행 한 코드의 일부 Project project = new Project(); //..// project.setStartDate(new Date(2023, 2, 5)); project.setEndDate(new Date(2032, 3, 5)); //..// projectRepository.save(project); MySQL 로그의 일부 541 Query insert into PROJECT (.. 2023. 5. 29.
[Java] 상속 관계의 동등성 비교 구현 DTO 분리 현재 프로젝트에서 사용하는 UserDTO는 총 두개로, 다음과 같다. package com.example.tumblbugclone.dto; @NoArgsConstructor @Data public class UserSendingDTO { private Long userIdx; private String userName; private String userId; private String userEmail; private String greeting; private String userImg; private Date lastLogin; private boolean isActive; } @NoArgsConstructor @Data public class UserReceivingDTO extend.. 2023. 5. 20.