본문 바로가기

전체 글

(73)
OAuth2 개념 정리 - 삽질중인 개발자 - OAuth2 란 - 1. OAuth 란? Open Authorization 로 다양한 플랫폼에서 권한 부여를 위한 산업 표준 프로토콜이다. 2. OAuth 탄생 배경 Oauth 방식이 등장하기 전에 내가 만든 사이트에서 다른 사이트의 리소스를 가져오기 위해서는 다른 사이트의 Id와 Password를 직접 입력을 받아 저장하여 필요할 때마다 불러와서 사용을 해야했다. 위와 같은 방식을 사용하게되면 다음과 같은 문제가 발생한다. 사용자 : 내가 만든 사이트에 다른 사이트의 id와 password를 공개하는 것에 대해 신뢰할 수 없다. 내가 만든 사이트 : id와 password를 받았기에 보안 문제가 생기는 경우 모든 책임을 져야한다. 다른 사이트 ( google, naver ) : 내가 만든 사이트를 ..
Summernote 에디터 툴바 수정 - 삽질중인 개발자 - 썸머노트 에디터 툴바 기능 수정 - summernote의 기본 옵션으로 에디터를 사용하려고 하면 폰트의 사이즈도 변경하지 못하고 문자의 색도 변경하지 못해서 바로 사용하기에는 약간 불편함이 존재한다. 그래서 이 기본 에디터 옵션을 조정하여 사용을 해야 한다. 써머 노트의 기본 사용법은 아래의 여기를 참조하자. 우선 기본 옵션을 사용하여 에디터를 로딩하면 위와 같은 화면이 나오는데 이 모습에서 아래와 같은 모습으로 변경할 것이다. 여기 써머노트 툴바 변경 링크를 참조 $('.summernote').summernote({ toolbar: [ // [groupName, [list of button]] ['fontname', ['fontname']], ['fontsize', ['fontsize']], ['s..
RestTemplate generic response type 매핑 방법 - 삽질중인 개발자 - RestTemplate Exchange 매소드 ResponseType 을 Generic Type 으로 매핑하기 - RestTemplate 을 사용하다 보면 Map 형태로 응답을 받아야 할 때가 있다. 이 포스팅에서는 resttemplate에서 map으로 응답받는 방법에 대해 포스팅한다. 우선 RestTemplate을 사용해서 API를 호출할 때 잘 만들어진 API라면 아래와 같은 형태를 갖고 있다. //네이버 API 호출 //https://developers.naver.com/docs/login/profile/ { "resultcode": "00", "message": "success", "response": { "email": "openapi@naver.com", "nickname": "OpenAP..
CSRF (Cross Site Request Forgery)공격이란? - 삽질중인 개발자 - CSRF ( 사이트 간 요청 위조 ) - 1. CSRF ( Cross Site Request Forgery ) 란? 사이트 간 요청 위조 사용자가 자신의 의지와 무관하게 공격자가 의도한 행동을 하여 특정 웹페이지를 보안에 취약하게 한다거나 수정, 삭제 등의 작업을 하게 만드는 공격 방법 2. 어떤식으로 동작하는가? ( 이미지 태그를 통한 공격 ) A라는 사이트의 관리자 권한을 갖고 있는 유저가 A라는 사이트에 로그인되어 있는 상태이고 A라는 사이트에 관리자가 유저의 권한을 변경할 때 사용되는 다음과 같은 URL이 있다고 할 때 GET /changeUserAuth?id=programmer93&auth=ROLE_ADMIN ( programmer93의 권한을 admin으로 변경 ) 공격자가 사용자한테 무작..
@ConfigurationProperties 사용법 - 삽질중인 개발자 - @configurationproperties 사용법 - ConfigurationProperties *.properties , *.yml 파일에 있는 property를 자바 클래스에 값을 가져와서(바인딩) 사용할 수 있게 해주는 어노테이션 Spring boot 에서는 운영에 필요한 설정(DB 정보, LOG설정 등등 )들을 *.properties , *.yml 에 써두고 관리한다. 이 설정은 KEY - VALUE 의 형태로 저장되어 관리하고 있으며 @Value 을 사용하여 바인딩을 할 수 있다. 아래와 같은 properties 파일이 있다고 가정할 때 site-url.naver=https://www.naver.com site-url.google=https:/google.com @Value 를 사용하여 바..
Spring boot 로그 설정 및 출력 방법- logback 설정하기 - 삽질중인 개발자 - Spring boot 로그 설정- 스프링 부트의 기본 로그 툴은 Logback이다. 로그 툴을 사용하는 이유는 System.out.print() 를 사용하게 되면 IO리소스를 많이 잡아먹어 속도가 느리며 후에 로그를 파일로 남겨서 확인해야 하기 때문이다. 로그를 잘 남겨놔야지 개발 단계 혹은 운영 단계에서 문제가 발생시 쉽게 잡아 낼 수 있다. ( 특히 SQL 쿼리는 눈에 보여야지 디버깅하기 쉽다. ) 1. pom.xml 에 추가 spring starter에 포함 안되어 있는 로깅시 쿼리를 풀로 보여줄 수 있게 해주는 라이브러리를 추가한다. org.bgee.log4jdbc-log4j2 log4jdbc-log4j2-jdbc4.1 1.16 2. log4jdbc.log4j2.properties 생성 log..
MySQL (MariaDB) 두 날짜 사이 일수, 주말(평일) 일수 구하기 - 삽질중인 개발자 - 두 날짜 사이 차이, 주말, 평일 일 수 구하기 - mariaDB에서 두 날짜 사이의 차이와 주말, 평일 일수를 구하는 방법입니다. 1. 두 날짜 사이 일수 구하기 SELECT ABS(DATEDIFF('2020-01-01','2020-02-01'))+1 2. 두 날짜 사이 주말 일수 구하는 함수 CREATE FUNCTION F_TOTAL_WEEKDAYS(date1 DATE, date2 DATE) RETURNS INT RETURN ABS(DATEDIFF(date2, date1)) + 1 - ABS(DATEDIFF(ADDDATE(date2, INTERVAL 1 - DAYOFWEEK(date2) DAY), ADDDATE(date1, INTERVAL 1 - DAYOFWEEK(date1) DAY))) / 7 ..
spring boot static 파일 다운로드 구현 - 삽질중인 개발자 - 정적 파일 다운로드 - 정적 파일이란 응답 요청이 왔을때 별도의 처리를 하지 않고 바로 보내줄 수 있는 파일들을 말한다. 보통 CSS, HTML, JS 등과 홈페이지의 소개서.pdf, 사용설명서.pdf 등의 파일을 말한다. 1. 코드 import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.Resource; import org.springframework.core.io.ResourceLoader; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.spring..