본문 바로가기

분류 전체보기

(135)
MVC구조 스프링 MVC 프로젝트를 구성하기 위해서 사용한다는 의미는 내부적으로 root-context.xml 로 사용하는 일반 java영역(POJO)과 serv;et-context.xml로 설정하는 web관련 영역을 같이 연동해서 구동하게 됩니다. 그림으로 간단하게 표현하면 다음과 같은 구조라고 볼수 있다. 바깥쪽에 있는 WebApplicationContext라는 존재는 기존의 구조에 MVC 설정을 포함하는 구조로 만들어 집니다. 스프링은 원래 목적 자체가 웹 애플리케이션을 목적으로 나온 프레임워크가 아니기 때문에 달라지는 영역에 대해서는 완전히 분리하고 연동하는 방식으로 구현되어 있습니다. 스프링MVC 기본사상 스프링 MVC를 이용하게 되면 개발자들은 직접적으로 HttpServletRequest/HttpServ..
JAVA(데이터타입) 이두가지의 차이점은 간단하다 기본타입은 byte,char,int,long,float,duble,boolean을이용해서 선언된 변수는 실제 값을 변수 안에 저장하지만 참조 타입인 배열,열거,클래스,인터페이스를 이용해서 선언된 변수는 메모리의 번지를 값으로 갖는다.번지를 통해 객체를 참조한다는뜻에서 참조타입이라고 한다.따라서 기본타입은 변수가 스텝 영역에생성되고 객체는 힙영역에 생성된다. 힙(Heep) 힙은 객체와 배열이 생성되는 영역이다. 힙 영역에 생성된 객체와 배열은 JVM 스택 영역의 변수나 다른 객체의 필드에서 잠조한다.참조하는 변수나 필드가 없다면 의미 없는 객체가 되기 때문에 이것을 쓰레기로 취급하고 JVM은 쓰레기 수집기(GarbageCollector)를 실행시켜 쓰레기 객체를 힙영역에서 자동..
JAVA?? 면접 볼때 받았던 질문인데 정확하게 답을 알수 없어서 한번 책을 보면서 조사해봤다 그전에 프로그래밍 언어가 어떤 언어 인지 부터 알아봐야한다 일반적으로 프로그래밍 언어라고 하면 고급 언어를 말하는데, 대표적으로 프로그래밍 언어인 C , C++,JAVA 는 모두 고급언에 속한다. 이언어들로 작성된 내용을 소스 라고 부르고 이소스는 커파일러 라는 소프트웨어에 의해 기계어로 변환된 후 컴퓨터에서 실행할 수 있게 된다. 우리가 은히 말하는 프로그램이란 컴퓨터에서 특정 목적을 수행 하기 위해 프로그래밍 언어로 작성된 소스를 기계어로 번역한것이다. 자바란? 1999년도부터 인터넷이 횔성화되면서 웹 애플리케이션 구축용 언어로 자바가 급부상 했다. 그 이유는 기업체 및 공공기관의 다양한 서버 운영 체제에서 단 한 번의..
SpringSecurity(세션제어API) 이클래스에서 처음으로 받아서 세션의 카운트 수를 가져온다 현재는 처음으로 인증을 시도하기 때문에 세션 count는 0이 되겠다 allowedSessions을 확인해보면 최대 세션 갯수를 알수 있다. 필자는 최대 세션갯수를 1로 설정해주었다. 그러면 아직 최대갯수 범위에 충족 하기 때문에 별다른일을 하지 않는다( false가아니라 true) 세션 고정보호 인데 사용자가 인증할때 쿠키값을 변경시키고 세션을 새로 생성하는 클래스이다. delegate.onAuthentication을 확인해보면 ChangeSessionIdAuthentication == 기본값 을 확인할수가 있다 applicationEventPublisher.publishEvent(new SessionFixationProtectionEvent(a..
SpringSecurity(세션제어 Filter) 인증 API - SessionManagememtFilter 1.세션관리 인증 시 사용자의 세션정보를 등록,조회,삭제 등의 세션 이력을 관리 2.동시적 세션 제어 동일 계정으로 접속이 허용되는 최대 세션수를 제한 3. 세션 고정보호 인증 할 때마다 세션쿠키를 새로 발급하여 공격자의 쿠키 조작을 방지 4.세션 정책 Always,if_required,Never,Stateless 인증 API - ConcurrentSessionFilter 매 요청 마다 현재 사용자의 세션 만료 체크 여부 세션이 만료되었을 경우 즉시 만료 처리 Session.isExpired() == true // 로그아웃 처리 // 즉시 오류 페이지 응답 인증 API - ConcurrentSessionFilter,SessionManagememt..
SpringSecurity(세션 정책) SessionCreationPolicy.Always : 스프링 시큐리티가 항상 세션 생성 SessionCreationPolicy.if_Required: 스프링 시큐리티가 필요 시 생성(기본값) SessionCreationPolicy.Never : 스프링 시큐리티가 생성하지 않지만 이미 존재하면 사용 SessionCreationPolicy.Statless : 스프링 시큐리티가 생성하지 않고 존재해도 사용하지 않음
SpringSecurity(세션 고정 보호정책) 현재 사용자와 공격자가 웹 어플리케이션이 있다. 공격자가 서버에 접속하고 서버에서는 공격자에게 쿠키 아이디를 발급해주고 공격자는 사용자에게 서버에서 받은 쿠키값을 심어 놓는다 이상태에서 사용자가 공격자가 심어 놓은 쿠키값을 가지고 로그인시도를 하게 되면 공격자와 사용자가 세션을 공유하게된다 그러면 공격자는 인증을 받지 않아도 서버자원의 접근이 가능하다 이런 세션공격을 방어하기 위해 SpringSecurity는 세션 고정보호기능을 제공한다 사용자가 비록 공격자가 심어 놓은 쿠키로 인증을 시도 하더라도 새로운 세션과 쿠키가 생성된다. 공격자가 심어 놓은 쿠키값은 의미가 없어지기 때문에 서버자원의 접근이 불가능하다. 1.sessionManagement() 로 설정한다 2..sessionFixation().ch..
SpringSecurity(동시 세션 제어) 동시 세션제어는 동일한 계정으로 인증 받을때 생성되는 세션의 허용갯수가 초과하지 않고 유지하는것을 말한다 S pringSecurity는 두가지의 전략으로 동시적 세션을 제어할수 있도록 제공하고 있다. 최대 세션허용갯수를 초과했다고 가정하자 첫번째 경우는 이전 사용자의 세션을 만료 시키는 전략! 현재 서버에서는 최대 사용할수 있는 세션의 갯수를 1개라고 가정해보자 사용자1과 사용자2의 세션이 2개 이므로 초과 되었다. 이럴때 이전사용자1 의 세션을 만료 시키는 설정을 하게 된다. 현재 세션은 2개지만 첫번째(사용자1)의 세션은 이미 만료되게 처리 한것이다. 그러면 현재 세션은 사용자2의 세션은 살아 있고 이전 사용자1의 세션은 만료되어 폐기 한다 그러면 현재 남아 있는 세션은 1개 이므로 최대 허용갯수 조..