XSS를 방지하기 위해 여러가지 방법이 있다. request 데이터 치환하기 (DB에 치환된 데이터로 저장) response 데이터 치환하기 (정상 데이터 저장 후 response 에서 내보내기) 회사에서 요구사항이 들어와서 개발하다 개념이 헷갈려서 정리. 1번 2번 다 만들어보고 1번으로 적용하게 되었다. XSS 방지 Filter (Request 데이터 치환) 입력 데이터에 대한 필터링을 수행할 수 있는 커스텀 필터를 구현 XSS 방지 필터 구현 public class XssFilter implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) th..
오늘도 열심히 일을 하다가.. image url 의 도메인을 서비스에서 받아서 Response 에서 처리해야하는게 소스 코드가 넘 더러워지고.. 비효율적이라고 생각이 들었다.public static FileDto create(File entity, String domain) { return FileDto.builder() .fileExt(entity.getFileExt()) .fileSize(entity.getFileSize()) .fileUrl(makeUrl(domain, entity.getFilePath())) .fileType(entity.getFileType()) .originFileName(e..
인프런 강의 : 스프링 핵심 원리 강의를 듣던 중.. @PostConstruct, @PreDestroy 애노테이션의 특징 최신 스프링에서 가장 권장하는 방법이다. 애노테이션 하나만 붙이면 되므로 매우 편리하다. 패키지를 잘 보면 javax.annotation.PostConstruct 이다. 스프링에 종속적인 기술이 아니라 JSR-250 라는 자바 표준이다. 따라서 스프링이 아닌 다른 컨테이너에서도 동작한다. 컴포넌트 스캔과 잘 어울린다. 유일한 단점은 외부 라이브러리에는 적용하지 못한다는 것이다. 외부 라이브러리를 초기화, 종료 해야 하면 @Bean의 기능을 사용하자. 여기서 마지막 줄 유일한 단점은 외부 라이브러리에서는 적용하지 못한다. 라는 말이 있었는데.. 사실 이 말이 제대로 와닿지 않았다. 외부..
페이지별 view count를 측정하기 위해.. controller 진입 마다 log 테이블에 저장하기로 했다. (하지만 이건 처음부터 잘못된 선택이였음..😅) 비록 view count를 측정하는 방법 접근이 좀 잘못된 거 같지만~ AOP 써본 기념으로 정리 AOP란? AOP는 Aspect Oriented Programming 의 약자로 관점 지향 프로그래밍이라고 불린다. 관점 지향은 쉽게 말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것이다. 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말한다. 1. 먼저 log를 쌓을 Entity 설정 @Getter @NoArgsConstructor @SequenceGener..
이 책에서 [chapter5. 스프링 시큐리티와 OAuth2.0으로 로그인기능 구현하기]를 따라 읽다보면 구글과 네이버로 로그인 만들기가 있다. 네이버와 구글을 만들었으면 카카오 로그인을 구현하는 게 인지상정.. 카카오로그인을 구현해보자 1. 카카오 Developers 사이트로 이동 카카오 Developers Kakao Developers 카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다. developers.kakao.com (1) REST API 키 [내 애플리케이션] > [앱 설정] > [요약정보] REST API 키 -> application-oauth 에 등록할 client-id (2) 카카오 로그인 활성 ..