Backend

· Backend/DB
SQL Injection이란?   SQL 인젝션은 웹 응용 프로그램에서 발생할 수 있는 보안 취약점 중 하나이다. 이 취약점은 악의적인 사용자가 웹 응용 프로그램에 악성 SQL 쿼리를 삽입하여 데이터베이스에 대한 불법적인 액세스를 시도할 수 있는 것을 의미한다. 일반적으로 웹 응용 프로그램은 사용자로부터 입력을 받아서 데이터베이스에 쿼리를 실행한다. 그러나 이런 입력이 충분히 검증되지 않거나 이스케이프되지 않은 경우,  악의적인 사용자는 입력 필드에 SQL 쿼리를 삽입할 수 있다. 이렇게 삽입된 SQL 쿼리는 웹 애플리케이션의 데이터베이스에 직접 전달되어 실행된다. 공격자는 이 공격을 통해 데이터베이스에 데이터를 읽거나 수정하거나 삭제할 수도 있고 그 외에도 다양한 유형의 공격을 시도할 수 있다.  DV..
오늘은 싱글톤 패턴에 대해서 공부해보겠다. package com.naver.shopping.singleton;import com.naver.shopping.AppConfig;import com.naver.shopping.member.MemberService;import org.junit.jupiter.api.DisplayName;import org.junit.jupiter.api.Test;import static org.assertj.core.api.Assertions.assertThat;public class SingletonTest { @Test @DisplayName("스프링 없는 순수한 DI 컨테이너") void pureContainer() { AppConfig app..
인프런을 공부하면서 알게 된 것들 정리    스프링 컨테이너    스프링 컨테이너 생성  ApplicationContext는 스프링 컨테이너로, 자바 설정 파일(AppConfig.class)을 사용하여 빈을 등록하고 관리한다. 자바 코드와 XML 설정을 모두 지원한다. ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); AppConfig.class는 자바 설정 클래스이다.스프링 컨테이너는 이 클래스를 읽어 빈을 등록한다.    스프링 빈 등록 및 조회  스프링 컨테이너는 빈 이름과 타입을 기준으로 빈을 등록하고 조회한다. 동일한 타입의 빈이 둘 이상 존재하면 이름을 지정해야 하며 부모..
JUnit이란?   JUnit은 자바에서 단위 테스트를 작성하고 실행하기 위한 프레임워크이다. Spring Boot에서는 JUnit 5 (JUnit Jupiter)를 사용한다. 먼저 JUnit5에서 자주 사용되는 테스트 검증 라이브러리인 Assertions에 대해서 간단히 알아보고 실제 코드와 함께 테스트 하는 과정을 이어나가보자. JUnit에서 제공하는 다양한 Assertion 메서드를 사용하여 예상 결과와 실제 결과를 비교할 수 있다. 테스트는 생산성을 높이고 애플리케이션의 품질 보장을 위해선 필수적으로 거쳐야 하는 단계이다.    JUnit의 주요 어노테이션들은 크게 @Test : 테스트 메서드 정의@BeforeEach: 각 테스트 메서드 실행 전에 실행될 메서드를 정의한다.@AfterEach: 각..
생성자 주입이라 함은 클래스의 생성자를 통해 필요한 의존성을 외부에서 전달받는 방식이다.객체 간의 결합도를 낮추고 테스트를 용이하게 한다. 생성자 주입의 장점에 대해 알아보고 예시 코드를 통해 생성자 주입을 이해해보자.    생성자 주입의 장점   1. 불변성생성자를 통해 주입된 의존성은 주로 final 키워드로 선언하여 불변성을 보장한다.객체가 생성된 후에는 의존성이 변경되지 않으므로 안전한 코드가 된다.   2. 테스트 용이성테스트 시에 원하는 의존성을 직접 주입할 수 있으므로 Mock 객체나 Fake 객체를 주입하는 방식으로 테스트를 할 수 있다. 실제 DB 대신 메모리 기반의 가짜 저장소를 주입한다던가 그런 식으로 하면 된다.@Testpublic void testServiceWithMockRepo..
이번 시간엔 스프링의 주요 개념인 Bean에 대해 간단히 알아보는 시간을 가져보겠다. 스프링 빈(Spring Bean)은 스프링 프레임워크의 핵심 개념으로, 애플리케이션의 객체를 관리하고 의존성을 주입하는 역할을 한다.     스프링 빈 생성 이유  스프링 컨테이너는 빈을 생성하고, 라이프사이클을 관리하며 필요한 곳에 빈을 주입함으로써 객체 간의 결합도를 낮추고 유지보수성을 높인다.  1. 라이프사이클 관리라는게 뭘까?  예를 들어보자. 데이터베이스 연결이나 파일 I/O와 같은 리소스는 제대로 관리하지 않으면 메모리 누수 등의 문제가 발생할 수 있다. 하지만 스프링 빈 라이프사이클 내에서 자동 관리가 가능하다. 스프링 컨테이너는 애플리케이션 실행 시 필요한 빈을 자동으로 생성하고 초기화와 소멸까지 전부 ..
spring boot를 공부할 때 lombok은 많은 편의를 가져다주는 좋은 툴이라고 할 수 있다. 지금부터 간단하게 lombok에 대해 알아가는 시간을 가져보겠다. lombok 이란? 간단하게 정의하자면 lombok은 자바 개발에서 반복적인 코드 작성을 줄여 개발 생산성을 높이기 위해 사용한다. 개발자들은 객체를 생성해 getter/setter 그리고 toString 메서드를 만든다. 처음엔 개발 초기 단계라 깔끔하게 할 수 있다 하더라도 잦은 수정과 필드명의 변경, 추가에 따라 관리하는 것이 쉽지 않다. 이런 경우에 롬복을 사용하면 자바 클래스를 만들 때 사용되는 getter/setter나 toString 등의 코드들을 @(어노테이션)으로 대체해서 선언하고 java 코드를 만든다. 시..
MVC란? MVC란 Model, View, Controller의 약자이다. Application이 서비스하는 디자인 패턴 중 하나이다. Spring Boot 또한 MVC 디자인 패턴을 사용한다.      Model DB와 Controller 사이에서 데이터를 전달하는 역할을 한다.Application이 포함해야 될 데이터가 무엇인지 정의한다.View 또는 Controller에 대한 정보를 알면 안된다.    why ? Model이 독립적이고 재사용 가능한 데이터를 담는 역할을 하기 때문에 뷰와 컨트롤러의 구체적인 구현에 의존하지 않도록 하기 위해서이다.       Model의 예시 코드package com.example.demo.model;import javax.persistence.Entity;impo..
hskhsmm
'Backend' 카테고리의 글 목록 (3 Page)