본문 바로가기

Java715

[Test] Mockito MockitoMock을 지원하는 프레임워크로 Mock 객체를 만들고 관리하고 검증 할 수 있는 방법 제공합니다. 쉽게 가짜 객체를 만들어준다고 생각하면 됩니다. 구현체가 아직 없는 경우나, 구현체가 있더라도 특정 단위만 테스트 하고 싶을 경우 주로 사용하게 됩니다.Mock이란한글로 "모의, 가짜의" 라는 뜻으로 테스트할 때 필요한 실제 객체와 동일한 모의 객체를 만들어 테스트의 효용성을 높이기 위해 사용하는 것을 말합니다.🏷️ Mock 객체 만드는 법✅ Mockito.mock(만들고자 하는 객체 타입.class)public class ListTest { @Test void simpleTest() { List listMock = mock(List.class); when.. 2023. 12. 15.
[Spring/Web] CSRF CSRF( Cross Site Request Forgery ) 사용자가 자신의 의지와 무관하게 공격자가 의도한 행동을 하여 특정 웹페이지를 보안에 취약하게 한다거나 수정, 삭제 등의 작업을 하게 만드는 공격 방법을 의미합니다. 위와 같이 A라는 도메인에서, 희생자가 조작된 요청정보를 포함한 게시물을 사용하였을 경우, 공격자도 권한을 가지게 되어서 A 도메인에서는 이 사용자가 일반 유저인지, 공격자의 악용된 공격인지 구분할 수가 없게 됩니다. 🏷️ CSRF의 특징 ▪️ XSS와 함께 웹에서 가장 효과적인 공격방법 ▪️ 스크립트가 없어도 공격이 가능한 방법 ▪️ 정상 사용자를 통해 공격이 진행되므로 공격자의 정보(IP 등)를 추적하는 것이 불가능 ▪️ Session Hijacking과 비슷한 권한을 도용한 .. 2023. 12. 4.
[Spring] RequestParam과 PathVariable @RequestParam과 @PathVariable 컨트롤러에서 Requestparam, PathVariable은 uri를 통해서 파라미터 값을 넘겨받을 때 사용하는 어노테이션입니다. uri를 통해서 값을 전달하는 방식은 아래와 같이 2가지 방법이 있습니다. RequestParam → http://xxx.x.x?id=1 PathVariable → http://xxxx.x.x/users/1 RequestParam의 경우 파라미터의 값과 이름을 함께 전달하는 방식으로 게시판 등에서 페이지 및 검색 정보를 함께 전달하는 방식을 사용할 때 많이 사용합니다. PathVariable 의 경우 Rest api에서 값을 호출할 때 주로 많이 사용합니다. 이와 같이 Spring에서는 이러한 전달인자를 처리하는데 두 가지.. 2023. 11. 7.
[Spring] ResponseEntity ResponseEntity Spring Framework에서 제공하는 클래스 중 HttpEntity라는 클래스가 존재합니다. 이것은 HTTP 요청(Request) 또는 응답(Response)에 해당하는 HttpHeader와 HttpBody를 포함하는 클래스입니다. public class HttpEntity { public static final HttpEntity EMPTY = new HttpEntity(); private final HttpHeaders headers; @Nullable private final T body; // ... } Response header 에는 웹서버가 웹브라우저에 응답하는 메시지가 들어있고, Reponse body에 데이터 값이 들어가 있습니다. HttpEntity 클래.. 2023. 11. 7.
[Spring] Spring Security Spring Security Spring 기반의 애플리케이션의 보안(인증과 권한, 인가 등)을 담당하는 스프링 하위 프레임워크로 Spring Security는 인증과 권한에 대한 부분을 Filter 흐름에 따라 처리하고 있습니다. Filter는 Dispatcher Servlet으로 가기 전에 적용되므로 가장 먼저 URL 요청을 받지만, Interceptor는 Dispatcher와 Controller 사이에 위치한다는 점에서 적용 시기의 차이가 있습니다. 특징 인증 및 권한 부여에 대한 포괄적이고 확장 가능한 지원 세션 고정, 클릭재킹, 크로스 사이트 요청 위조 등과 같은 공격으로부터 보호 서블릿 API 통합 Spring Web MVC와의 선택적 통합 etc 인증(Authorizatoin)과 인가(Auth.. 2023. 10. 26.
[Spring] JPA JPA(Java Persistence API) 자바의 ORM을 위한 표준 기술로 Hibernate, Spring JPA, EcliplseLink 등 과 같은 구현체가 있고 이것의 표준 인터페이스가 JPA 입니다. ORM(Object-Relational Mapping) 객체와 RDBMS를 자동으로 매핑해주는 것을 말한다. (객체 ↔ 관계형 데이터베이스) 기술적으로는 어플리케이션의 객체를 RDB 테이블에 자동으로 영속화 해주는 것이라고 보면된다. 장점 QL문이 아닌 Method를 통해 DB를 조작할 수 있어,비즈니스 로직을 구성하는데만 집중할 수 있습니다. Query와 같이 필요한 부수적인 코드가 줄어들어 코드의 가독성이 높아집니다. 객체지향적인 코드 작성이 가능하면 되기때문에 생산성 증가합니다. 매핑하는 .. 2023. 10. 17.