일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 스프링
- 스프링 핵심 기능
- QueryDSL
- Exception
- http
- db
- AOP
- transaction
- Proxy
- pointcut
- 김영한
- 백준
- springdatajpa
- Servlet
- SpringBoot
- Greedy
- jpa
- 그리디
- spring
- java
- Spring Boot
- kotlin
- Thymeleaf
- JDBC
- 인프런
- Android
- 자바
- 알고리즘
- JPQL
- 스프링 핵심 원리
- Today
- Total
목록쿠키 (7)
개발자되기 프로젝트
로그인 시 검증 처리를 위해 의존성 추가. implementation 'org.springframework.boot:spring-boot-starter-validation' 로그인을 벌써 구현하는 이유? 세션에서 로그인 회원 정보를 가져와서, 글 작성시 작성자로 활용하기 위함 1. 로그인 방식 쿠키 세션 2. loginForm 로그인 시 입력할 정보이다. @Getter @AllArgsConstructor public class LoginForm { private String loginId; private String password; } 3. loginService 로그인 처리 로직은 간단하다 비밀번호가 DB에 입력된 값과 동일하면 Member정보를 반환한다. 이 때 DTO로 변환하여 return. @S..
Servlet은 HTTP Session기능 제공. 1. HttpSession 서블릿이 제공하는 HttpSession 도 앞서 만든 SessionManager 와 같은 방식으로 동작 서블릿을 통해 HttpSession 을 생성하면 다음과 같은 쿠키를 생성 쿠키 이름이 JSESSIONID 이고, 값은 추정 불가능한 랜덤 값이다. Cookie: JSESSIONID=5B78E23B513F50164D6FDD8C97B0AD05 HttpSession은 attribute(member정보), 쿠키 이름, 기타 정보(생성 시각, 마지막 요청 시각 등) 를 포함하는 객체. HttpServletRequest에서 httpRequest.getSession()을 통해 받을 수 있음. 2. HttpSession 사용 2.1 Sess..
기존에 사용된 쿠키 방식을 session으로 변경해보자. 1. LoginController loginV2() @PostMapping("/login") public String loginV2(@Validated @ModelAttribute("loginForm") LoginForm form, BindingResult bindingResult, HttpServletResponse response){ if(bindingResult.hasErrors()){ return "login/loginForm"; } Member loginMember = loginService.login(form.getLoginId(), form.getPassword()); if(loginMember == null){ bindingResul..
1. 쿠키 방식의 문제점 쿠키애 정보를 보관하는 방법은 보안문제가 있다. 보안문제 해결을 위해서는 중요한 정보는 서버에 저장해야함. 클라이언트와 서버는 추정 불가능한 임의의 식별자 값으로 연결해야함. 이렇게 서버에 중요한 정보를 보관하고 연결을 유지하는 방법을 세션이라 함 2. 세션 동작 방식 로그인 사용자가 loginId , password 정보를 전달하면 서버에서 해당 사용자가 맞는지 확인 세션 생성 사용자 정보가 맞으면, 세션 ID를 생성 이 때 세션 ID는 추정 불가능해야 함. UUID는 추정이 불가능하다. -->로또 연속 6번보다 낮은 확률로 맞출 수 있음 ㅋㅋㅋ Cookie: mySessionId=zz0101xx-bab9-4b92-9b32-dadb280f4b61 생성된 세션 ID와 세션에 보관..
1. 보안 문제 쿠키 값은 임의로 변경할 수 있다. 클라이언트가 쿠키를 강제로 변경하면 다른 사용자가 된다 실제 웹브라우저 개발자모드 Application Cookie 변경으로 확인 Cookie: memberId=1 Cookie: memberId=2 (다른 사용자의 이름이 보임) 쿠키에 보관된 정보는 훔쳐갈 수 있다. 만약 쿠키에 개인정보나, 신용카드 정보가 있다면? 이 정보가 웹 브라우저에도 보관되고, 네트워크 요청마다 계속 클라이언트에서 서버로 전달된다. 내 PC가 털릴 수도 있고, 네트워크 전송 구간에서 털릴 수도 있다..... 해커가 쿠키를 한번 훔쳐가면 평생 사용할 수 있다. 해커가 쿠키를 훔쳐가서 그 쿠키로 악의적인 요청을 계속 시도할 수 있다. 2. 대안 쿠키에 중요한 값을 노출하지 않아야 ..
Header - 쿠키 Set - Cookie: 서버에서 클라이언트로 쿠키 전달(응답) Cookie: 클라이언트가 서버에서 받은 쿠키를 저장하고, HTTP 요청시 서버로 전달. 0. Stateless, Connectionless HTTP의 특징은 Stateless, Connectionless.. bsh-developer.tistory.com 1. 쿠키 서버에서 로그인에 성공하면 HTTP 응답에 쿠키를 담아서 브라우저에 전달 그러면 브라우저는 앞으로 해당 쿠키를 지속해서 보내준다. 쿠키 생성 쿠키 사용(client 쿠키 전달1) 쿠키 사용(client 쿠키 전달2) 영속 쿠키, 세션 쿠키 영속 쿠키: 만료 날짜를 입력하면 해당 날짜까지 유지 세션 쿠키: 만료 날짜를 생략하면 브라우저 종료시 까지만 유지->브..
Set - Cookie: 서버에서 클라이언트로 쿠키 전달(응답) Cookie: 클라이언트가 서버에서 받은 쿠키를 저장하고, HTTP 요청시 서버로 전달. 0. Stateless, Connectionless HTTP의 특징은 Stateless, Connectionless이다. 즉 서버와 클라이언트는 서로의 상태를 유지하지 않고, data 전송 수 연결을 종료한다. 이와 같은 특징으로 아래와 같은 상황에서 문제..? 불펴함..? 이 발생할 수 있다. 무상태(stateless) 프로토콜 서버가 클라이언트이 상태를 보존하지 않음 장점 : 서버 확장성 높음, 스케일 아웃 단점 : 클라이언트가 추가 데이터 전송필요. 1. 상태 유지 :Stateful 서버가 클라이언트의 이 전 상태를 보존 2. 무 bsh-devel..