Spring boot
-
@RequestBody HTTP 요청으로 넘어오는 Body 의 내용을 HttpMessageConverter 를 통해 Java Object로 역직렬화한다. 바이너리 파일을 포함하고 있지 않은 데이터를 받는 역할을 한다. * HttpMessageConverter : HTTP 요청과 응답에 대해서 "전략 패턴"을 사용해 Converting 해주는 역할 @RequestBody 어노테이션은 HTTP 요청으로 같이 넘어오는 Header 의 Content-Type을 보고 어떤 Converter 를 사용할지 정하므로 Content-Type 은 반드시 명시해야한다. 자주쓰는 Content-Type 종류 application/json : { key : value } 형태인 json 형태로 전송 application/x-w..
@RequestBody, @RequestParam, @RequestPart@RequestBody HTTP 요청으로 넘어오는 Body 의 내용을 HttpMessageConverter 를 통해 Java Object로 역직렬화한다. 바이너리 파일을 포함하고 있지 않은 데이터를 받는 역할을 한다. * HttpMessageConverter : HTTP 요청과 응답에 대해서 "전략 패턴"을 사용해 Converting 해주는 역할 @RequestBody 어노테이션은 HTTP 요청으로 같이 넘어오는 Header 의 Content-Type을 보고 어떤 Converter 를 사용할지 정하므로 Content-Type 은 반드시 명시해야한다. 자주쓰는 Content-Type 종류 application/json : { key : value } 형태인 json 형태로 전송 application/x-w..
2023.05.15 -
XSS 란?Cross Site Scripting 의 줄임말로 XSS의 약어이다.원래는 CSS가 맞지만 이미 CSS 라는 스타일 시트(.css) 가 사용되고 있어 XSS라고 칭한다. XSS 공격이란?크로스 사이트 스크립팅의 뜻처럼 사이트 간 스크립팅 이라는 이름의 웹 취약점이다.웹 사이트의 관리자가 아닌 제 3자가 악의적인 목적을 가지고 악성 스크립트를 삽입하여의도하지 않은 명령을 실행시키거나 쿠키, 세션 등을 탈취할 수 있는 취약점이다. 예를 들어 게시판의 글을 작성할 때 작성 내용 안에 아래와 같은 문장을 삽입한다.그럼 DB 데이터에 위와 같은 내용이 삽입되고 사용자는 게시판 글을 확인하면alert 창으로 사용자의 쿠키값이 보여진다.이렇게 사용자가 악의적인 목적을 가지고 악성 스크립트를 삽입하는 공격을..
Spring Boot XSS Filter 설정(lucy-xss-servlet-filter)XSS 란?Cross Site Scripting 의 줄임말로 XSS의 약어이다.원래는 CSS가 맞지만 이미 CSS 라는 스타일 시트(.css) 가 사용되고 있어 XSS라고 칭한다. XSS 공격이란?크로스 사이트 스크립팅의 뜻처럼 사이트 간 스크립팅 이라는 이름의 웹 취약점이다.웹 사이트의 관리자가 아닌 제 3자가 악의적인 목적을 가지고 악성 스크립트를 삽입하여의도하지 않은 명령을 실행시키거나 쿠키, 세션 등을 탈취할 수 있는 취약점이다. 예를 들어 게시판의 글을 작성할 때 작성 내용 안에 아래와 같은 문장을 삽입한다.그럼 DB 데이터에 위와 같은 내용이 삽입되고 사용자는 게시판 글을 확인하면alert 창으로 사용자의 쿠키값이 보여진다.이렇게 사용자가 악의적인 목적을 가지고 악성 스크립트를 삽입하는 공격을..
2023.05.02 -
Filter 와 Interceptor Interceptor 는 스프링 컨테이너 영역이므로 Spring 빈으로 등록이 가능하지만 Filter 는 서블릿 컨테이너의 영역이라서 Spring 의 빈으로 등록할 수 없다고 생각했다. 위 이미지와 같이 Filter 는 서블릿 컨테이너의 영역에서 존재하고 서블릿이 제공하는 기술이며스프링 컨테이너의 영역과는 분리되어 있다. 하지만 개발을 하게 되면 Filter 를 Spring 빈으로 등록하여 사용하는걸 볼 수 있다.서블릿 컨테이너에서 관리되는 DelegatingFilterProxy 가 서블릿 컨테이너와 스프링 컨테이너를연결할 수 있는 프록시용 필터이다. Spring Security Filter Spring Security 는 위 이미지와 같이 서블릿 Filter 를..
Spring Security DelegatingFilterProxy(서블릿 컨테이너와 스프링 컨테이너의 다리 역할)Filter 와 Interceptor Interceptor 는 스프링 컨테이너 영역이므로 Spring 빈으로 등록이 가능하지만 Filter 는 서블릿 컨테이너의 영역이라서 Spring 의 빈으로 등록할 수 없다고 생각했다. 위 이미지와 같이 Filter 는 서블릿 컨테이너의 영역에서 존재하고 서블릿이 제공하는 기술이며스프링 컨테이너의 영역과는 분리되어 있다. 하지만 개발을 하게 되면 Filter 를 Spring 빈으로 등록하여 사용하는걸 볼 수 있다.서블릿 컨테이너에서 관리되는 DelegatingFilterProxy 가 서블릿 컨테이너와 스프링 컨테이너를연결할 수 있는 프록시용 필터이다. Spring Security Filter Spring Security 는 위 이미지와 같이 서블릿 Filter 를..
2023.03.23 -
LogoutFilter 란? LogoutFilter는 Spring Security 에서 로그아웃에 대한 처리를 담당하는 필터로 사용자가 특정 로그아웃 URL로 로그아웃을 요청 했을 경우에만 적용되는 필터이다. LogoutFilter는 세션 무효화, 인증토큰 삭제 등 Security Context에서 해당 인증 객체를 삭제한다. 아래는 LogoutFilter 클래스와 doFilter 메서드이다. requiresLogout() 메서드를 통해 요청된 URL이 로그아웃 URL인지 확인한다. 아래는 requiresLogout 메서드이다. RequestMatcher 의 matches 를 통해 URL 정보를 확인하고 맞으면 true 를 리턴한다. 로그아웃 URL 이 맞을 경우SecurityContextHolder 에..
[Spring Security] LogoutFilterLogoutFilter 란? LogoutFilter는 Spring Security 에서 로그아웃에 대한 처리를 담당하는 필터로 사용자가 특정 로그아웃 URL로 로그아웃을 요청 했을 경우에만 적용되는 필터이다. LogoutFilter는 세션 무효화, 인증토큰 삭제 등 Security Context에서 해당 인증 객체를 삭제한다. 아래는 LogoutFilter 클래스와 doFilter 메서드이다. requiresLogout() 메서드를 통해 요청된 URL이 로그아웃 URL인지 확인한다. 아래는 requiresLogout 메서드이다. RequestMatcher 의 matches 를 통해 URL 정보를 확인하고 맞으면 true 를 리턴한다. 로그아웃 URL 이 맞을 경우SecurityContextHolder 에..
2023.02.17 -
Jasypt 란?Jasypt 홈페이지에서 아래와 같이 설명한다.Jasypt is a java library which allows the developer to add basic encryption capabilities to his/her projects with minimum effort, and without the need of having deep knowledge on how cryptography works.Jasypt는 개발자가 암호화 작동 방식에 대한 깊은 지식이 없어도 최소한의 노력으로 프로젝트에 기본 암호화 기능을 추가할 수 있는 자바 라이브러리입니다.쉽게 말해 Java 프로젝트 내에 작성된 .properties 파일(설정 파일) 등을 암호화 하기 위한 Java 라이브러리이다. 구성 ..
.properties 데이터 암호화 - jasypt 암호화Jasypt 란?Jasypt 홈페이지에서 아래와 같이 설명한다.Jasypt is a java library which allows the developer to add basic encryption capabilities to his/her projects with minimum effort, and without the need of having deep knowledge on how cryptography works.Jasypt는 개발자가 암호화 작동 방식에 대한 깊은 지식이 없어도 최소한의 노력으로 프로젝트에 기본 암호화 기능을 추가할 수 있는 자바 라이브러리입니다.쉽게 말해 Java 프로젝트 내에 작성된 .properties 파일(설정 파일) 등을 암호화 하기 위한 Java 라이브러리이다. 구성 ..
2023.01.30 -
웹브라우저 쿠키(Cookie)란?웹브라우저 쿠키란 인터넷 사용자가 웹사이트를 접속했을 때 사용자의 개인장치에 방문 기록 등브라우저의 정보들이 저장된 텍스트 파일이다.쿠키의 데이터 형태는 Key, Value 형태로 String 형이며, 4KB 이상 저장이 불가능하다. 이러한 웹브라우저 쿠키를 이용해 인터넷 사용자의 아이디를 쿠키에 저장해놓고저장된 아이디를 불러와 재사용할 수 있다. 특정 웹사이트에서 로그인할 때 자주 볼 수 있는 아이디 저장하기 기능을 구현해보자. 환경구성 : Spring Boot, Spring Security(로그인 기능), Thymeleaf(템플릿 엔진) 1. CookieUtils 클래스 생성아래 내용과 같이 CookieUtils 라는 클래스를 생성한다.public class Cooki..
[Spring Security] 로그인 시 아이디 저장하기 기능 구현(Cookie)웹브라우저 쿠키(Cookie)란?웹브라우저 쿠키란 인터넷 사용자가 웹사이트를 접속했을 때 사용자의 개인장치에 방문 기록 등브라우저의 정보들이 저장된 텍스트 파일이다.쿠키의 데이터 형태는 Key, Value 형태로 String 형이며, 4KB 이상 저장이 불가능하다. 이러한 웹브라우저 쿠키를 이용해 인터넷 사용자의 아이디를 쿠키에 저장해놓고저장된 아이디를 불러와 재사용할 수 있다. 특정 웹사이트에서 로그인할 때 자주 볼 수 있는 아이디 저장하기 기능을 구현해보자. 환경구성 : Spring Boot, Spring Security(로그인 기능), Thymeleaf(템플릿 엔진) 1. CookieUtils 클래스 생성아래 내용과 같이 CookieUtils 라는 클래스를 생성한다.public class Cooki..
2023.01.16