일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 김영한
- JPQL
- 자바
- Servlet
- Spring Boot
- JDBC
- 백준
- Exception
- Thymeleaf
- http
- db
- SpringBoot
- Android
- 인프런
- kotlin
- java
- AOP
- transaction
- jpa
- QueryDSL
- spring
- 스프링 핵심 기능
- 알고리즘
- Proxy
- 스프링 핵심 원리
- 그리디
- Greedy
- pointcut
- 스프링
- springdatajpa
- Today
- Total
목록인프런/[인프런] 스프링 MVC 2 (102)
개발자되기 프로젝트
1. 세션 관리가 제공하는 기능 세션 생성 sessionId 생성 (임의의 추정 불가능한 랜덤 값) 세션 저장소에 sessionId와 보관할 값 저장 sessionId로 응답 쿠키를 생성해서 클라이언트에 전달 세션 조회 클라이언트가 요청한 sessionId 쿠키의 값으로, 세션 저장소에 보관한 값 조회 세션 만료 클라이언트가 요청한 sessionId 쿠키의 값으로, 세션 저장소에 보관한 sessionId와 값 제거 2. SessionManager 생성 cookie 이름은 항상 "mySessionId"임 -> 상수로 만듦 : "SESSION_COOKIE_NAME" session은 메모리에 저장하고, 동시성 문제로 인해 ConcurrentHashMap 사용 package hello.login.web.sess..
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) 영속 쿠키, 세션 쿠키 영속 쿠키: 만료 날짜를 입력하면 해당 날짜까지 유지 세션 쿠키: 만료 날짜를 생략하면 브라우저 종료시 까지만 유지->브..
로그인 기능을 개발해보자. 로그인 ID, 비밀번호를 입력하는 부분에 집중 1. LoginService 람다식을 이용하면 코드를 깔끔하게 정리할 수 있음. loginId로 찾은 결과에서 member의 password가 입력된 password와 일치하는 member만 다음 로직 진행. 일치하는 결과 없는 경우 null 반환 -> 로그인 실패. @Service @RequiredArgsConstructor public class LoginService { private final MemberRepository memberRepository; /** * @return null 로그인 실패 */ public Member login(String loginId, String password){ /* Optional f..
1. Member package hello.login.domain.member; import lombok.Data; import javax.validation.constraints.NotEmpty; @Data public class Member { private Long id; @NotEmpty private String loginId; //로그인id @NotEmpty private String name; @NotEmpty private String password; } 2. MemberRepository loginId로 찾는 메서드 추가 package hello.login.domain.member; import lombok.extern.slf4j.Slf4j; import org.springframewo..
1. Package 구조 설계 Package 구조 hello.login domain item member login web item member login Domain이 가장 중요함!! 도메인은 화면, UI, 기술 인프라 등등의 영역은 제외한 시스템이 구현해야 하는 핵심 비즈니스 업무 영역을 말함 향후 web 기술을 바꿔도 Domain은 그대로 유지할 수 있어야 함. 이렇게 하려면 web은 domain을 알고있지만 domain은 web을 모르도록 설계해야 한다. 이것을 web은 domain을 의존하지만, domain은 web을 의존하지 않는다고 표현한다. 예를 들어 web 패키지를 모두 삭제해도 domain에는 전혀 영향이 없도록 의존관계를 설계 반대로 이야기하면 domain은 web을 참조하면 안된다...