전체 글
-
잘못된 URI 접근 시, 커스텀 에러 페이지로 이동스터디 2018. 9. 4. 19:41
이번 포스팅은 사용자가 잘못된 URI를 입력했을 때, 커스텀 에러 페이지로 가게 하는 방법에 대해 알아보겠습니다. 아래는 프로젝트 진행시 요구사항이었습니다. 주목해서 볼 부분은 세 번째 항목인 스프링 시큐리티를 사용하지 못하도록 한 부분입니다. 스프링 시큐리티를 사용하지 않고, 잘못된 URI 입력했을 때 커스텀 에러 페이지로 가게 하는 가장 쉬운 방법은 인터셉터에서 요청 URI를 검사하여 허용하지 않은 URI일 경우 에러 페이지로 리다이렉트해주는 것입니다. 그래서 아래와 같이, 허용된 URI를 직접 관리해서 이것 이외의 URI가 요청될 경우 에러페이지로 리다이렉트 하는 식으로 구현했습니다. 하지만 이러한 방법에는 몇가지 문제가 있다고 생각했습니다. 첫 번째로, URI가 새로 추가 될 때마다, 매번 URI..
-
XSS 공격에 대한 방어스터디 2018. 9. 4. 16:04
프로젝트를 진행하며 XSS(Cross Site Scripting) 공격에 대한 방어를 하기 위해 네이버에서 개발한 Lucy-Xss-Servlet-Filter 라이브러리를 사용했습니다. 해당 라이브러리는 웹어플리케이션으로 들어오는 모든 요청 파라미터에 대해 기본적으로 XSS 방어 필터링을 수행합니다. 하지만 Lucy-Xss-Servlet-Filter 라이브러리는 form-data에 대해서만 적용되고 JSON에 대해서는 처리해주지 않는다는 단점이 있습니다. 이를 위해 별도로 Request Body로 넘어오는 JSON에 대한 필터를 등록해줬습니다. (마지막 부분에는 Lucy-Xss-Servlet-Filter를 사용하지않고 XSS 공격을 방어하는 법을 소개하겠습니다.) Lucy-Xss-Servlet-Filter..
-
웹소켓카테고리 없음 2018. 8. 20. 02:32
용어 WebSocketHTTP 에서 양방향 통신을 제공하는 프로토콜 (실시간으로 통신이 가능) STOMP Simple (or Streaming) Text Oriented Message Protocol 폴링 방식 주기적으로 계속해서 확인 메세지 브로커ex. RabbitMQ, ActiveMQ etc... 토픽URI 와 유사한 개념자신이 받고자 하는 주제를 정의하면 그것에 해당하는 메시지를 수신 했을 때 처리하는 것 서버 설정@Configuration @EnableWebSocketMessageBroker public class WebSocketConfig implements WebSocketMessageBrokerConfigurer { // 메세지 브로커 설정 @Override public void confi..
-
자바 ORM 표준 JPA카테고리 없음 2018. 8. 12. 22:01
ORM(Object Relational Mapping) : 객체와 RDB를 매핑시킨다는 개념 JPA(Java Persistence API) : ORM 개념을 자바에서 구현하기 위한 스펙(표준) 영속성 컨텍스트1. 비영속 : 영속성 컨텍스트와 전혀 관계가 없는상태 (아직 저장되지 않아서)2. 영속3. 준영속 : 엔티티가 영속성 컨텍스트에 저장되어있다가 분리, 영속성 컨텍스트가 더이상 관리하지 않는 상태4. 삭제 영속성 컨텍스트 장점 1. 1차 캐시2. 동일성 보장 (쉽게 말해 싱글턴)영속성 상태의 엔티티는 고유한 식별 값(ID)으로 구분되는데 같은 식별 값을 가지는 모든 엔티티는 동일3. 트랜잭션을 지원하는 쓰기 지연 4. 변경감지5. 지연 로딩 동작 방식1. 1차 캐시에 엔티티를 저장2. 쓰기 지연 SQ..
-
[우아한테크캠프] SpringBoot + Ehcache카테고리 없음 2018. 8. 11. 09:43
JSR(Java Specification Request, 자바 스펙 요구서) 스프링의 장점 중 하나로 PSA(Portable Service Abstraction)가 있다. 외부 서비스들을 간단한 추상 인터페이스만으로 쉽게 사용할 수 있도록 해주는 것Cache에서는 Redis, Ehcache, ConcurrentMap 등을 CacheManager 인터페이스로 추상화돼있고, CacheManager 인터페이스를 이용해서 또 다른 Cache 라이브러리를 사용할 수 있다. PSA(Portable Service Abstraction)성격이 비슷한 여러 종류의 기술을 추상화하고 이를 동일한 사용법으로 사용할 수 있도록 지원해주는 것스프링에서는 서비스 추상화를 위해 다양한 어댑터를 제공한다. 즉 다양한 기술에 대한 A..