본문 바로가기

분류 전체보기72

[WebGoat] Hijack a session 풀이 자체 세션 ID로 개발할 때 사용자별 세션 ID가 복잡하고 임의적이지 않으면 응용 프로그램은 세션 기반 브루트 포스 공격에 매우 취약하다고 한다. 공격을 통해 다른 사용자의 인증된 세션에 대한 접근권한을 얻는 것이 목표인 문제이다. 문제에서 hijack_cookie라는 값을 예측해서 다른 인증된 사용자의 정보를 얻으라고 한다. 먼저 다음과 같이 아무 아이디와 비밀번호를 입력해서 access 요청을 하였다. Burp Suite를 통해 해당 login 요청에 대한 request와 response를 intercept하여 HTTP History를 통해 확인하였다. response를 보면 실패 문자와 함께 hijack_cookie에 임의의 랜덤 값이 응답으로 온 것을 볼 수 있다. 한번으로는 알 수 없으니 로그인.. 2023. 4. 8.
[JSCODE] 스프링 스터디 회고 활동내용 한 달 동안 JSCODE에서 스프링 스터디를 진행하게 되었다. 그동안 혼자서 스프링을 공부했었는데 다른 분들과 같이 배워간다면 더 많은 발전이 있을 거라 생각해 참여하게 되었다. 멘토님의 주도하에 일주일에 두번씩 줌으로 진행하게 되었고 임의로 선정된 팀원들 같이 활동하였다. API 개발해보는 것을 목표로 개발할 때 필요한 스프링의 기본적인 내용들과 Spring Data JPA에 관한 것을 배웠고 네트워크, 깃허브 사용 등 개발할 때 필요한 부분들에 대한 지식들을 알려주셨다. 진행 방법은 멘토님의 설명이 끝난 후 팀원들과 같이 주어진 과제를 해결하면서 모르는 것들을 서로 고민, 공유하면서 해결을 위해 노력했다. 따로 질문할 것이 있으면 멘토님에게 질문하면서 해당 주차에 학습하고자 했던 주제에 대해.. 2023. 3. 31.
[JSCODE] 상점 API 추가 이번엔 상점 엔티티를 추가하고 관련된 몇 개의 api를 만들어 보았다. Store 엔티티 @Entity @Getter public class Store { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; @Embedded private Address address; private String phoneNumber; @OneToMany(mappedBy = "store") private List products = new ArrayList(); // 연관관계 메서드 public void addProduct(ProductEntity product) { products.add(product);.. 2023. 3. 29.
[Spring] @ExceptionHandler, @ControllerAdvice를 통한 예외 처리 스프링은 API 예외를 처리하기 위한 @ExceptionHandler이란 어노테이션을 제공한다. @ExceptionHandler 에러를 전달하기 위한 DTO이다 @Data @AllArgsConstructor public class ErrorResult { private String code; private String message; } 다음은 예외를 받고자 하는 컨트롤러에 @ExceptionHandler를 사용한 예시이다. @Slf4j @RestController public class ApiExceptionV2Controller { @ResponseStatus(HttpStatus.BAD_REQUEST) @ExceptionHandler(IllegalArgumentException.class) publi.. 2023. 3. 24.
[JSCODE] Spring Data JPA ProductEntity와 Spring Data JPA를 이용하여 API를 설계해 보았다. Controller, Service, Repository 3가지 계층으로 나누어 기능별로 구분하였다. ProductEntity @Entity @Getter public class ProductEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private Long price; protected ProductEntity() { } public ProductEntityDto toDto() { return ProductEntityDto.builder() .id(id) .name(name).. 2023. 3. 24.
[JSCODE] Spring Data JPA 세팅하기 데이터베이스 데이터베이스는 특정 조직의 업무를 수행하는 데 필요한 상호 관련된 데이터들의 모임이다 특징 실시간 접근성(Real-Time Accessibility) : 수시적이고 비정형적인 질의(조회)에 대하여 실시간 처리에 의한 응답이 가능해야 한다. 계속적인 변화(Continuous Evolution) : 데이터베이스의 상태는 동적이다. 즉 새로운 데이터의 삽입(Insert),삭제(Delete),갱신(Update)로 항상 최신의 데이터를 유지한다. 동시공용(Concurrent Sharing): 데이터베이스는 서로 다른 목적을 가진 여러 응용자들을 위한 것이므로 다수의 사용자가 동시에 같은 내용의 데이터를 이용할 수 있어야 한다. 내용에 의한 참조(Content Reference): 데이터베이스에 있는 .. 2023. 3. 21.