본문 바로가기

java

(6)
[security] 스프링 시큐리티 기능 정리 5.1. Authentication(인증) 5.1.1 Autentication Support 스프링 시큐리티는 사용자 인증 처리를 기본적으로 지원한다 5.1.2 Password Storage Password Storage History 스프링 시큐티리는PasswordEncoder 인터페이스를 통해 비밀번호를 안전하게 저장할 수 있는 단방향 변환을 수행한다. org.springframework.security.crypto.password.PasswordEncoder 스프링 시큐리티 5.0부터 BcryptPasswordEncoder가 기본값이 되었다. (before: NoOpPasswordEncoder) DelegatingPasswordEncoder 과거 어플리케이션의 레거시 비밀번호 방식과 현재 변경된 비..
spring4shell 취약점 내용 정리 spring4Shell Spring4Shell은 Spring Core 프레임워크에서 발견된 새로운 제로데이 취약점이다. 해당 취약점 이슈는 애플리케이션에서 인증되지 않은 원격 코드 실행(Remote Code Execution, RCE)을 허용하는 것으로 나타났다. 3월 29일 CVE-2022-22963으로 추적된 새로운 Spring Cloud Function 취약성이 공개 되었다. 그러나 더 중요한 Spring Core RCE 취약성에 대한 정보가 중국 사이트에 유포되었다. 발생의 원인은 안전하지 않은 역직렬화에 의해 발생한다고 한다. 해당 이슈에 대해 잘 정리된 포스팅을 첨부한다 https://github.com/lunasec-io/lunasec/blob/master/docs/blog/2022-03-3..
[generic] raw type 사용을 지양하자 Hello, Generic 제네릭이 나오기 이전까지는 컬렉션에서 객체를 꺼낼 때마다 객체 타입을 지정하도록 형변환을 해주어야 했다 형변환의 오류는 런타임 시점에서 오류를 발견할 수 있었다 제네릭을 사용하면 위와 같은 문제를 컴파일 시점에서 확인할 수 있기 떄문에 더 안전하고 명확한 프로그램을 만들어준다 제네릭이란 ? 제네릭 클래스, 제네릭 인터페이스: 클래스와 인터페이스 선언에 타입 매개변수가 쓰이는 경우를 말한다 ex) public interface Set extends Collection 우리는 제네릭 클래스와 제네릭 인터페이스를 통틀어 제네릭 타입(generic type) 이라고 부른다 제네릭 타입은 매개변수화 타입(Parameterized type)을 정의한다 ex) List : List 클래스의..
Spring Scheduler Spring task Scheduling ThreadPoolTaskScheduler ScheduledExecutorService에 작업을 위임하고 TaskExecutor 인터페이스를 구현한다 내부 스레드 관리에 적합하다 단일 인스턴스가 @Scheduled 비동기 스케쥴링을 처리할 수 있다 Thread 명에 ThreadPoolTaskScheduler 접두어가 붙는다 public class ThreadPoolTaskSchedulerConfig { @Bean public ThreadPoolTaskScheduler threadPoolTaskScheduler(){ ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler(); thr..
HashMap vs HashSet in Java 코딩테스트를 연습하는 도중 hash를 사용하는 문제를 풀다 HashMap이 더 성능이 좋다는 것을 배우게 되어 내용을 정리해보려고 한다. HashSet이란? Set 인터페이스를 구현하고, 중복 개체를 가지지 않는 컬렉션 프레임워크이다. equals(), hashCode() 를 재정의해야 중복 여부를 체크할 수 있다. Thread Safe 하지 못하고 동기화하지 않는다.public boolean add(Object obj) 고유한 값이 추가될 경우 true를 반환하고, 중복된 값을 추가할 경우 false를 반환한다. HashMap이란? Map 인터페이스를 구현하고, 키를 값에 매핑하는 해시 테이블이다. 중복 키를 허용하지 않지만 중복 값을 허용한다 Thread Safe하지 못하고 동기화하지 않는다. 중복값..
Servlet Container란 Web Server 웹 서버는 클라이언트로부터 HTTP 요청을 받아들이고, 웹 페이지를 HTTP 프로토콜을 통해 반환하는 역할을 합니다. Servlet Container 웹 서버는 클라이언트는 정적 웹 페이지만 요청을 할 수 있습니다. 서블릿 컨테이너는 Java를 사용하여 서버 측에서 동적으로 웹 페이지를 생성합니다. 사용자 요청에 의해 웹 페이지를 생성하는 것은 서블릿이 담당합니다. 서블릿 컨테이너는 이 서블릿들을 웹 서버와 상호작용을 할 수 있도록 해주는 기능을 담당하고 있습니다. Servlet 서블릿은 init, service, destory의 라이프 사이클을 가지고 있습니다. init() 서블릿이 처음 요청될 때 초기화를 하는 메서드입니다. 초기화된 서블릿은 싱글톤으로 관리됩니다. service(..