전체 글 (42) 썸네일형 리스트형 [Spring Boot] Spring Security @EnableMethodSecurity 설명 및 예제 설명@EnableMethodSecurity는 Spring Security의 메서드 수준 보안을 활성화하는 데 사용되는 어노테이션입니다. 이 어노테이션을 통해 특정 메서드 또는 클래스에 접근 제어를 적용할 수 있습니다. @EnableMethodSecurity는 다양한 메서드 보안 어노테이션(@PreAuthorize, @PostAuthorize, @Secured 등)을 사용할 수 있게 해줍니다.주요 기능@PreAuthorize: 메서드가 호출되기 전에 접근을 허용할지 결정합니다.@PostAuthorize: 메서드가 호출된 후에 접근을 허용할지 결정합니다.@Secured: 특정 롤(role)로 접근을 제한합니다.@RolesAllowed: 특정 롤(role)로 접근을 제한합니다 (JSR-250). 예제 다음은 .. [Spring Boot] @Component와 @Configuration의 특징과 차이점 @Component특징스캔 대상: @Component 어노테이션이 적용된 클래스는 Spring의 컴포넌트 스캔에 의해 자동으로 빈으로 등록됩니다.기능: @Component는 특별한 기능 없이 단순히 빈으로 등록되는 클래스에 사용됩니다.하위 어노테이션: @Component는 @Repository, @Service, @Controller와 같은 특정 목적을 가진 어노테이션들의 기본 어노테이션입니다.사용 예제import org.springframework.stereotype.Component;@Componentpublic class MyComponent { public void doSomething() { System.out.println("Doing something in MyCompone.. [Spring Boot] BCrypt, SCrypt, Argon2 비밀번호 암호화 기법 BCrypt, SCrypt, Argon2 비밀번호 암호화 기법1. BCrypt특징안전성: 반복적인 해시 함수를 사용하여 공격에 견딜 수 있도록 설계됨.적응성: 비용 인자(cost factor)를 조정하여 처리 시간을 증가시켜 공격 난이도를 조정할 수 있음.견고성: 레인보우 테이블 공격에 강함.장점CPU를 많이 사용하여 브루트 포스 공격을 방어함.비용 인자를 조정하여 해시 계산 시간을 늘려 보안을 강화할 수 있음.단점메모리 사용량이 적어 현대의 GPU 공격에 상대적으로 취약할 수 있음.2. SCrypt특징안전성: 메모리와 CPU를 모두 많이 사용하는 설계로, 병렬 공격을 어렵게 만듦.적응성: 메모리 및 CPU 사용량을 조정하여 공격 난이도를 조정할 수 있음.견고성: 기존의 해시 공격 기법들에 대해 강력한 .. [Spring Boot] JWT, JWS, JWE 개념 및 차이점 JWT (JSON Web Token)JWT는 JSON 객체를 사용하여 두 당사자 간에 정보를 안전하게 전송하기 위한 컴팩트하고 자가 포함된 방식입니다. JWT는 주로 인증 및 정보 교환에 사용됩니다. JWS (JSON Web Signature)JWS는 JWT의 한 형태로, JSON 데이터를 디지털 서명하여 무결성을 보장합니다. 서명된 토큰은 원본 데이터의 변경 여부를 확인할 수 있습니다. JWS는 주로 인증에 사용됩니다. JWE (JSON Web Encryption)JWE는 JWT의 또 다른 형태로, JSON 데이터를 암호화하여 기밀성을 보장합니다. 암호화된 토큰은 데이터를 보호하고 인가된 수신자만이 내용을 볼 수 있도록 합니다. JWE는 주로 기밀 데이터 교환에 사용됩니다. 차이점 및 장단점 특성 JW.. [Spring Boot] @Value와 @ConfigurationProperties 차이점 Spring Boot에서 애플리케이션 설정 값을 외부에서 주입받아 사용하는 방법 중 두 가지 주요 방법은 @Value와 @ConfigurationProperties입니다. 이 두 가지 방법의 사용법과 차이점을 설명하겠습니다.@Value 사용법@Value 애노테이션은 주로 개별 속성 값을 주입받을 때 사용됩니다. 주입하려는 속성 값을 애플리케이션 설정 파일(application.properties 또는 application.yml)에서 정의한 후, 해당 값을 주입받을 필드에 @Value 애노테이션을 사용합니다.application.properties 또는 application.yml 파일에 설정 값 정의:# application.propertiesapp.name=MyAppapp.version=1.0.0# .. [Spring Boot] HandlerMethodArgumentResolver 역할과 예제 개념HandlerMethodArgumentResolver는 Spring MVC에서 컨트롤러 메서드의 매개변수를 해석하고 주입하는 역할을 합니다. 이 인터페이스를 구현하면 사용자 정의 논리로 요청 파라미터를 해석하고 컨트롤러 메서드에 전달할 수 있습니다. 대부분의 API 에서 공통으로 처리하는 로직이 있으면 처리하기 간편하다고 볼 수 있다.작동 원리요청 수신: 클라이언트가 서버에 요청을 보냅니다.매핑: Spring MVC(Dispatcher Servlet)가 해당 요청을 처리할 핸들러 메서드(컨트롤러 메서드)를 찾습니다.매개변수 해석: HandlerMethodArgumentResolver 구현체가 핸들러 메서드의 매개변수를 해석하고 값을 주입합니다.응답 반환: 핸들러 메서드가 실행되고, 결과가 클라이언트에.. [Spring Boot] Spring Boot CORS 설정 CORS (Cross-Origin Resource Sharing)개념CORS는 Cross-Origin Resource Sharing의 약자로, 서로 다른 출처(도메인, 프로토콜, 포트) 간에 리소스를 공유할 수 있도록 하는 메커니즘입니다. 웹 애플리케이션에서 보안상의 이유로, 브라우저는 다른 출처의 리소스에 대한 요청을 제한합니다. CORS는 이러한 제한을 완화할 수 있도록 특정 조건하에 다른 출처의 리소스에 접근할 수 있는 방법을 정의합니다.동작 원리CORS는 HTTP 헤더를 사용하여 동작합니다. 서버는 특정 헤더를 포함하여 브라우저가 요청을 허용할 수 있도록 합니다.Preflight Request: 브라우저는 실제 요청을 보내기 전에 OPTIONS 메서드를 사용하여 "Preflight Request".. [Spring Boot] Spring Boot 에서 Spring REST Docs 설정, Swagger 와 비교 Spring REST Docs개념Spring REST Docs는 RESTful API 문서를 생성하는 도구입니다. 통합 테스트와 문서화를 통합하여 테스트 코드에서 직접 문서를 생성할 수 있게 해줍니다. 이는 테스트가 통과된 내용만 문서화되기 때문에 항상 신뢰할 수 있는 문서를 보장합니다. Asciidoctor를 사용하여 문서를 생성하며, 커스터마이징이 가능합니다. 설정 방법1. 의존성 추가build.gradle 파일에 필요한 의존성을 추가합니다.plugins { id 'java' id 'org.springframework.boot' version '3.3.0' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'org.. 이전 1 2 3 4 5 6 다음