일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- 디비버
- javax.management.instancenotfoundexception: org.springframework.boot:type=admin
- 백준1946
- 도커
- 포트포워딩 안될때
- name=springapplication
- 리눅스환경
- 유니캐스트
- 페이로드
- instancenotfoundexception
- ubuntu
- 네트워크모델
- 배열복사
- 배열최소값최대값
- springboot
- dbeaver
- SpringApplication
- 오름차순
- jmx
- 백준
- 브로드캐스트
- 모래시계출력
- 도커권한설정
- 리눅스계열
- Decapsulation
- 우분투
- 포트포워딩
- docker
- wan
- 배열빈도수
- Today
- Total
목록이론학습/SRPING (8)
다잘하고싶어

웹 기반에서는 모든 데이터를 HTTP를 사용하여 주고받는다. 서버간에 데이터를 주고 받을 때도 사용한다. 웹 서버 HTTP를 기반으로 동작. 정적 리소스를 제공하고, 기타 부가기능을 제공한다. ex) 정적파일 HTML, css, js, 이미지, 영상 대표적인 웹 서버 : 엔진엑스NGINX, 아파치 APACHE 웹 어플리케이션 서버 (Web Application Server, WAS) 프로그램 코드를 실행해서 애플리케이션 로직 수행 - 동적 HTML, HTTP API(JSON), 서블릿, JSP, 스프링 MVC 대표적인 WAS : 톰캣 두 가지의 차이? 웹서버는 정적 리소스, 웹 어플리케이션 서버는 애플리케이션 로직(동적) 을 실행하는 서버다. 사실은 둘의 용어와 경계가 모호하다. 웹 시스템 구성 - WA..

sessionId : 세션Id, JSESSIONID 의 값-> 예) 34B14F008AA3527C9F8ED620EFD7A4E1 maxInactiveInterval : 세션의 유효 시간, 예) 1800초, (30분) creationTime : 세션 생성일시 lastAccessedTime :세션과연결된사용자가최근에서버에접근한시간,클라이언트에서서버로 sessionId ( JSESSIONID )를 요청한 경우에 갱신된다. isNew : 새로 생성된 세션인지, 아니면 이미 과거에 만들어졌고, 클라이언트에서 서버로 sessionId ( JSESSIONID )를 요청해서 조회된 세션인지 여부 세션 타임아웃 설정 세션은 사용자가 로그아웃을 직접 호출해서 'session.invalidate()'가 호출되는 경우에 삭제되..

이전에 직접 만든 세션에서는 적용하지 않았던 기능 -> 특정 시간 사용하지 않으면 세션만료 HTTP세션에서는 위의 기능을 자동으로 지원한다. 기본개념 서블릿이 기본적으로 제공하는 쿠키는 쿠키 이름이 JSESSIONID 이고, 값은 추정 불가능한 랜덤 값이다. Cookie: JSESSIONID=5B78E23B513F50164D6FDD8C97B0AD05 //로그인 성공처리 //세션이 있으면 있는 세션 반환, 없으면 신규 세션 생성해서 반환 HttpSession session = request.getSession(); //세션에 로그인 회원정보 보관 session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember); 세션의 create 옵션 default --> re..

세션 직접 구현 1. 세션 생성 2. 세션 조회 3. 세션 만료 1. 세션 생성 @Component public class SessionManager { public static final String SESSION_COOKIE_NAME = "mySessionId"; private Map sessionStore = new ConcurrentHashMap(); //동시성 문제가 발생할 수 있을 때에는 무조건 ConcurrentHashMap 사용하기 /** * 세션생성 */ public void createsSession(Object value, HttpServletResponse response) { //session id 생성, 값을 세션에 저장 String sessionId = UUID.randomUU..

세션 동작 방식 이해하기 사용자가 아이디, 비밀번호를 넣으면 서버로 데이터가 넘어온다. 서버는 회원저장소에서 데이터와 일치하는 정보가 있는 지 확인한다. (모두 일치한다면) 서버에 세션 저장소를 만들고, 추정불가능한 랜덤값을 (보통 자바에서 지원하는 uuid를 사용) 생성해서 토큰키로 사용한다.(=세션아이디) 값은 회원객체를 저장한다. 즉 세션아이디를 알면 회원객체를 꺼낼 수 있음. (아래 예시표 참고) sessionId value zz011e8e29zi memberA 이후 서버에서 쿠키를 만들어서 웹브라우저에 보내준다(상태유지를 위해서) 쿠키를 보낼 때, 세션아이디를 넘겨준다. 웹브라우저에서는 쿠키저장소에 임의로 만든 랜덤값을 저장한다. 즉, 클라이언트와 서버는 결국 쿠키로 연결되어야 한다. 여기서 중..

쿠키를 사용하면 보안 상 심각한 문제가 발생할 수 있다. 1. 쿠키값은 임의로 변경될 수 있다. 회원1 과 회원2 로 회원가입 한 후, 회원1로 로그인한다. 이때, application 에서 memberId 의 value값을 임의로 5로 변경하면? 변경 후 새로고침하면? 쿠키값은 서버에서 클라이언트에게 보내주는 값이기 때문에 위변조가 가능하다!! 매우 위험함. 2. 쿠키에 보관된 정보는 훔쳐갈 수 있다. 만약 쿠키에 중요한 개인정보나 신용카드 정보와 같은 것이 들어있다면? 이 정보는 웹브라우저에도 보관되고, 네트워크 요청마다 계속 클라이언트에서 서버로 전달된다. 3. 해커가 쿠키를 한번 훔쳐가면 평생 사용할 수 있다. 악의적인 요청을 계속 시도 가능하다. 대안 쿠키에 중요한 값을 노출하지 않고, 사용자별..

쿠키 서버에서 로그인에 성공하면 HTTP 응답에 쿠키를 담아서 브라우저로 전달함. 로그인폼에서 아이디랑 비밀번호를 입력 후 로그인 버튼을 클릭하면 클라이언트(웹브라우저)에서 서버로 전송된다. 서버에서는 회원저장소 안에 회원정보가 존재하는 지를 확인하고, 정보가 존재하면 로그인 성공시킨다(비밀번호도 맞아야함) 이때, 존재하면 쿠키를 만들어서 웹 브라우저에 전달해준다. 즉, 로그인 성공처리과정에서 쿠키를 만들어서 클라이언트에게 전달해줘야한다는 의미. 웹브라우저는 내부의 쿠키저장소라는 곳에서 쿠키를 들고 있는다. 예를 들어 멤버아이디를 넘겨줬다면,(memberId = 1) 이후 웹브라우저는 다른 페이지에 접근할 경우, 전송할 때 항상 쿠키를 포함해서 전송한다. (memberId = 1) - 로그인 아이디 아니..
[Spring Data] 스프링을 사용하면 별도로 데이터베이스에 save 하는 과정이 이루어지지 않는다. 과정을 살펴보면 다음과 같다. 1. 트랜잭션 시작 2. 엔티티 조회 3. 엔티티 값 변경(데이터 변경) 4. 트랜잭션 커밋 즉, 데이터베이스에 update 쿼리와 관련된 코드가 없다는 것. 그러나 콘솔창을 확인해보면 자동으로 save 메서드로 변경사항을 저장하지 않아도 update 쿼리가 실행된 것을 확인할 수 있다. 이유는? 더티체킹 Dirty Checking Dirty = 상태의 변화가 생긴 정도 Dirty Checking = 상태 변경 검사 JPA에서는 트랜잭션이 끝나는 시점에 변화가 있는 모든 엔티티 객체를 데이터베이스에 자동으로 반영한다. 즉, save 메서드를 사용하지 않아도 자동으로 up..