전체 글 77

@EnableScheduling 설정하지 않았는데 Schedule 동작 시

@EnableScheduling을 설정하지 않았는데도 Schedule이 동작하고 있을 때 한번 확인해보세요. 전체적으로 라이브러리를 훑어봤는데 Redis Config부분에서 발견되었습니다. spring-session-data-redis 사용하고, Redis 활성화 시에 RedisHttpSessionConfiguration를 사용하게되는데 아래와 같이 @EnableScheduling이 적용되어 있습니다. @Configuration @EnableScheduling public class RedisHttpSessionConfiguration extends SpringHttpSessionConfiguration implements EmbeddedValueResolverAware, ImportAware { pri..

Spring 2024.01.17

[Docker] 2. 컨테이너 관리

컨테이너 실행하기 컨테이너 실행 명령어는 다음과 같다 docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...] 옵션 설명 -d --detach Detached mode(백그라운드 모드) -p --publish 호스트와 컨테이너의 포트 연결(포트 포워딩) -v --volume 호스트와 컨테이너의 디렉토리 연결(파일을 호스트에 바로 저장, 마운트개념) --rm 프로세스 종료 시 컨테이너 자동 제거 --name 컨테이너 이름 지정 -i --interactive 표준 입력(stdin)을 활성화, bash 사용시 사용 -t --tty TTY 모드를 사용, bash 사용시 사용, 해당 명령을 사용하지 않으면 명령은 할 수 있겠지만 쉘이 표시되지 않음 Ubuntu 1..

Infrastructure 2022.06.17

[Docker] 1. 설치

linux / mac / window 와 상관없이 설치 가능하다 https://docs.docker.com/desktop/mac/install/ https://docs.docker.com/desktop/windows/install/ https://docs.docker.com/desktop/linux/install/ 도커는 리눅스 컨테이너이므로 mac / window의 경우 가상머신에 설치된다. 그러므로 하드웨어나 OS가 가상머신을 지원하지 않는 다면 동작하지 않을 수 있음 설치 확인 설치 후 버전 명령어로 설치를 확인 해보기 docker version 결과 Client: Cloud integration: v1.0.22 Version: 20.10.12 API version: 1.41 Go version: ..

Infrastructure 2022.06.17

[알고리즘-기초] Greedy, 탐욕법

부분해가 전체해가 될 수 있는 문제면 사용할 수 있는 솔루션이다. 최소값을 찾는다고 할 때 위와 같은 문제면, 탐욕법이 적합하지 않다. 부분해를 따라가다가 지역적인 최소값을 찾게되지만 전체해가 되진 않기 때문이다. 위와 같이 탐욕법으로 최소값을 찾다가다 보면 전체해가 되는 문제여야 된다. 문제를 해석하고 부분해가 전체해가 되는지를 파악하는게 중요하다. 참고 문제 - 최소한의 동전으로 금액을 완성시키자 1. [10, 100, 500] 동전으로 710원 만들기 500 x 1 -> 210원 남음 100 x 2 -> 10원 남음 10 x 1 -> 0원 총 4개 사용 위와 같이 주어지면 탐욕법이 적용 되는 듯 보인다 하지만 2. [10, 30, 40, 50] 동전으로 70원 만들기 50 x 1 -> 20원 남음 ..

[스프링 시큐리티] ExceptionTranslationFilter - 예외 처리 필터

https://docs.spring.io/spring-security/site/docs/5.1.5.RELEASE/reference/htmlsingle/#exceptiontranslationfilter Spring Security Reference The authenticator is also responsible for retrieving any required user attributes. This is because the permissions on the attributes may depend on the type of authentication being used. For example, if binding as the user, it may be necessary to read them docs..

스터디-Spring 2022.02.15

[스프링 시큐리티] UsernamePasswordAuthenticationFilter - Form 인증 처리 필터

폼 로그인을 처리하는 필터 form에 입력한 username과 password로 AuthenticationToken을 만들고, AuthenticationManager를 통해 인증을 시도 AuthenticationManager(구현체: ProviderManager)는 여러 AuthenticationProvider를 이용하여 인증을 시도 한다 그 구현체 중 DaoAuthenticationProvider는 UserDetailsService를 이용하여 UserDetails를 가져오고, 사용자가 입력한 password와 비교하여 인증을 처리한다.

스터디-Spring 2022.02.09

[스프링 시큐리티] LogoutFilter - 로그아웃 처리 필터

LogoutHandler (Composite 객체 - 여러개의 LogoutHandler를 사용하고 있다) LogoutSuccessHandler (Logout을 성공한 다음 처리를 위한 객체) - 기본 객체 SimpleUrlLogoutSuccessHandler logout process LogoutFilter -> CompositeLogoutHandler(LogoutHandler 여러개를 갖고있음) -> csrf 사용시 csrf token을 null로 변경(CsrfLogoutHandler) -> session을 invalidate함(초기화), 그리고 SecurityContextHolder를 비움 (SecurityContextLogoutHandler) HttpSecurity config에서의 logout설정..

스터디-Spring 2022.02.08

[스프링 시큐리티] CsrfFilter - CSRF 공격 방지

CSRF(Cross-site Request Forgery) - 사이트 간 요청 위조 https://ko.wikipedia.org/wiki/%EC%82%AC%EC%9D%B4%ED%8A%B8_%EA%B0%84_%EC%9A%94%EC%B2%AD_%EC%9C%84%EC%A1%B0%EF%BB%BF 사이트 간 요청 위조 - 위키백과, 우리 모두의 백과사전 ko.wikipedia.org 과정 1. 이용자는 웹사이트에 로그인하여 정상적인 쿠키를 발급(인증을 받은 상태라는 뜻) 2. 공격자가 메일로 다음과 같이 코드를 심어 보냄 위의 URL은 패스워드를 변경하는 URL이고 인증이 되어있어야만 접근가능 3. 이용자가 메일을 읽으면 브라우저는 이미지 파일을 받아오기 위해 위의 URL을 조회함 4. 이용자의 브라우저는 인증이..

스터디-Spring 2022.02.07

[스프링 시큐리티] HeaderWriterFilter

기본적으로 5개의 header writer 적용 XContentTypeOptionsHeaderWriter: MIME타입 스니핑 방어 X-Content-Type-Options: nosniff https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options XXssProtectionHeaderWriter: 브라우저에 내장된 XSS 필터 적용 X-XSS-Protection: 1; mode=block https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection CacheControlHeadersWriter: 캐시 히스토리 취약점 방어 Cache-Control:..

스터디-Spring 2022.01.30