본문 바로가기

우아한테크코스

(33)
CORS 2021-06-16글 [10분 테코톡] 🌳 나봄의 CORS을 들으며 정리한 글입니다. 배경 지식 SOP(Same Origin Policy) 다른 출처의 리소스를 사용하는 것에 제한하는 보안 방식 왜 SOP? CSRF Attack 때문! 사용자는 인증 토큰을 가지고 있는 상태 해커가 만든 주소로 이동하는데, 여기다 해커는 악의적인 스크립트를 심음 해커는 인증 토큰을 가지고 악의적인 스크립트를 실행할 수 있음 만약 송금이나 민감한 정보를 건드릴 시 굉장히 위험 여기서 SOP가 위력을 발휘 웹사이트 입장에서는 자신과 다른 출처를 가지기 때문에 위 요청은 받을 수 없다고 판단 출처(Origin)란? Protocol, Host, Port 세가지가 같아야 같은 출처라고 판단 참고로 인터넷 익스플로어는 출처판단에 P..
Level2. atdd-subway-fare 정리 2021-06-16글 요금 정책 로그인 사용자와 비로그인 사용자를 구별하여 요금 정책을 적용 PathController에서는 토큰이 없어도 예외가 아니었고 MemberController에서는 토큰이 없으면 예외였기에 Resolver에서는 각각에 맞는 처리를 해주어야 했음 맨 처음 페어랑 기능만 돌아가게 구현했을 때는 기존에 있는 로그인된 사용자에 대한 인가 과정을 거치는 Resolver를 재사용하도록 구현 이러기 위해서는 이 각각에 맞는 처리를 일간 Controller로 옮겨야 했음 AuthenticationPrincipalArgumentResolver @Override public Object resolveArgument(MethodParameter parameter, ModelAndViewContai..
Level2. atdd-subway-path 정리 2021-06-11글 STEP1, 2 JwtTokenProvider jwt 토큰 생성, 토큰 검증, 토큰에서 인증 정보 추출하는 유틸 클래스 AuthorizationExtractor HTTP의 Authorization Header에서 Bearer 타입인 경우 Access Token을 추출하는 유틸 클래스 AuthenticationPrincipalConfig @Configuration public class AuthenticationPrincipalConfig implements WebMvcConfigurer { private final AuthService authService; public AuthenticationPrincipalConfig(AuthService authService) { this.a..
Level2. atdd-subway-map 정리 2021-06-11글 중복되는 테스트 메서드 중복되는 테스트 메서드는 추출하자 테스트코드도 유지보수의 대상이며 하나의 문서이기 때문에 가독성을 고려하자 private ExtractableResponse addSection(String content) { return RestAssured.given().log().all() .body(content) .contentType(MediaType.APPLICATION_JSON_VALUE) .when() .post("/lines/{id}/sections", 1L) .then().log().all() .extract(); } 예외 처리는 Service에서 DAO에서 예외를 체크해주고 있었음 DAO는 말그대로 DB에 어세스하는 역할만 할 뿐 이 결과에 대한 예외는 서..
Level2. jwp-chess 정리 2021-06-09글 @ControllerAdvice 전역 예외를 처리하는데 사용 정리 @ControllerAdvice, @RestControllerAdvice REST API REST API 설계 방법을 찾아보고 고민하여 반영 정리 REST API 디자인 Profile 실제 애플리케이션에서 사용하는 DB는 Mysql 그대로 냅두고 테스트에서는 h2를 사용하여 h2 의 장점을 극대화해서 사용하도록 리팩또 테스트 DB를 따로 설정하기 위해 열심히 찾아보다가 application-properties를 활용하는 방안 학습 처음에는 application-{환경}-properties로 각각 파일을 만들어주었음 아래와 같은 리뷰를 받고 test.resource에 application-properties를 만들어줌 ..
Cache 2021-05-31글 [10분 테코톡] 🐻큰곰의 Cache을 들으며 정리한 글입니다. 메모리 계층 구조 데이터를 저장하는 공간의 속도와 용량은 반비례 빠를수록 가격이 올라간다. 용량이 큰 저장장치는 속도가 느림 둘 다 잡기엔 비용이 너무 많이 듦 파레토의 법칙 원인 중 상위 20%가 전체 결과의 80%를 만든다. 많이 쓰는 20%가 80%의 효율을 차지한다. 데이터 지역성의 원리 자주 쓰는 데이터는 시간적 혹은 공간적으로 한 곳에 몰려있을 가능성이 높음 시간 지역성 for문에 조건 변수를 선언하면 해당 변수는 for문이 끝나기 전까지 계속 쓰일 확률이 높음 공간 지역성 for문에서 어떤 배열에 접근했을 때 해당 배열이 위치한 메모리 공간의 내용은 for문이 끝나기 전까지 계속 쓰일 확률이 높음 순차 지역..
📋 테스트로 배우는 Spring Auth 강의 2021-05-28글 피드백 강의 인증 헤더 로그인을 통해 토큰을 발급 받은 후 헤더에 Authorization에 토큰을 실어보낸다. 왜 굳이 이 헤더에 토큰을 넣어 보낼까? HTTP 인증 HTTP 프로토콜의 정의이기 때문이다. 클라이언트가 "/" 요청을 보낸다. 서버는 접근을 할 수 있는지 확인하고, 없으면 401을 보낸다. 여기서는 basic이라는 방식으로 토큰을 검증하고 있다. 잘못되었으니 다시 요청해! HTTP 인증 스킴 Basic base64를 이용해 인코딩된 사용자의 id/pw 쌍의 인증 정보를 전달 안전을 위해 HTTPS(TLS) 연결 위에서 발생되어야 함 Bearer bearer token이라는 보안 토큰을 활용하는 인증 스킴 Outh2.0에서 사용하기 위해 만들어짐 JWT Json Web..
MVC 패턴 2021-05-26글 [10분 테코톡] 🧀 제리의 MVC 패턴, [10분 테코톡] 👩🏻‍💻👨🏻‍💻해리&션의 MVC 패턴을 들으며 정리한 글입니다. MVC 패턴 디자인 패턴 Model View Controller 3가지로 구분한 패턴 유지보수가 편해지는 코드 구성 방식 웹 애플리케이션 아키텍쳐의 역사 (JSP로 구성한) 웹 애플리케이션의 아키텍쳐 : 모델1 구성 : JSP + JavaBeand(Service) 뷰와 로직이 섞임 장점 : 구조가 단순 단점 : 출력과 로직 코드가 섞여 유지보수가 어렵다. (JSP로 구성한) 웹 애플리케이션의 아키텍쳐 : 모델2 구성 : JavaBean(Service) + JSP + 서블릿 MVC 구조 장점 : 뷰와 로직이 분리되어 유지보수가 쉽다. 단점 : 복잡하므로 작은 프..