'Jenkins를 이용한 CI/CD Pipeline 구축' 강의를 참고하였습니다. SonarQube란? 지속적인 통합(CI)과 분석을 할 때 사용되는 솔루션 코드가 가지고 있는 Issue, Defects, 코드의 복잡도를 분석해 코드가 사용할 수 있는 가용 범위와 문제점을 분석한다. 버그나 취약점을 찾고, 코드 스멜과 같이 불필요한 코드와 코드의 이상 여부를 탐지한다. 이러한 작업을 통해 코드에 대한 품질을 높여주는 용도로 사용되고 있다. 현재 진행중인 프로젝트의 코드를 분석하기 위해 SonarQube를 사용하기로 했다. 주어진 EC2의 용량이 크기 때문에 문제없이 사용 가능했다. (용량을 많이 차지해 프리티어는 사용이 어렵다고 들었다.) 프로젝트 스펙 Java 11 Spring Boot 2.7.15 G..
생산성을 향상시키는 스프링부트 기반의 API 템플릿 프로젝트 구현 강의를 듣고 정리한 내용입니다. XSS(Cross Site Scripting) 악의적인 사용자가 공격하려는 사이트에 스크립트를 넣는 기법 쿠키나 세션 등 민감한 정보를 탈취할 수 있다. 저장형 XSS 악의적인 사용자가 사이트에 악성 스크립트를 작성해서 저장함. ( ) 사용자가 악성 스크립트가 저장되어있는 웹사이트에 접속함, 스크립트 코드가 실행되고, 사용자의 정보가 악의적인 사용자한테 전달됨, 악의적인 사용자가 서버에 사용자인척 하며 악의적인 행동을 할 수 있음. 사용자가 관리자였다면 더 큰 피해가 발생! 따라서 코드가 삽입되지 못하도록 막아야한다! = ''와 같은 문자들을 '<', '>' 로 변경하면 됨! → 치환되어 저장되기 때..
JWT를 이용해서 로그인을 개발하고, 인증/인가 인터셉터를 개발하였는데 axios를 이용해서 요청을 보내니 이런 에러가 계속해서 발생했다. (postman을 사용했을 땐 아마 문제가 없었던 것으로 기억했다..) 분명히 CORS 설정을 미리 해줬는데 왜 이런현상이..?? 알고보니 CORS 문제가 아니라 preflight의 헤더에 Authorization 토큰 값이 없기 때문에 계속 발생하는 것이었다.. 해결법은 아주 간단했다. 구현한 인터셉터에서 preflight의 경우 토큰 검증을 하지 않으면 된다! preflight는 OPTIONS 요청이므로, HTTP Method가 OPTIONS일 경우 인증되었다고 넘기면 된다. // Preflight면 무시 if (HttpMethod.OPTIONS.name().eq..
Inversion Of Control (IoC, 제어의 역행) 보통 프로그램에서 객체를 사용해야 할 때의 실행 과정은 아래와 같다. public class GameController() { public static void main(String[] args) { // 객체가 필요하다. 필요한 객체를 생성한다. Game game = new Game(); // 생성한 객체를 사용한다. game.start(); } } GameController에서 Game 객체가 필요하므로, GameController에서 Game 객체를 생성해서 사용한다. 그러나 Spring에서는 Game 객체를 먼저 생성하고, GameController에 주입해준다. public class GameController() { public s..