분류 전체보기70 테스트에서 @CreatedDate 정렬 문제 해결하기 문제상황테스트 코드 작성 중 @CreatedDate 필드가 자동으로 현재 시간을 설정하면서, 데이터 정렬이 일정하지 않아 테스트가 실패하는 문제를 겪었다. Rating rating = saveRating(다미, 이준석, 3.5, 1); Rating rating1 = saveRating(레온이, 이준석, 3.5, 2); Rating rating2 = saveRating(장몽이, 이준석, 3.5, 3); Rating rating3 = saveRating(멍청이, 이준석, 3.5, 4); log.info("rating createdDate : {}",rating.getCreatedDate()); log.info("rating 1 cre.. 테스트 2025. 2. 11. 외부 API 예외 처리 전략: 내 서비스와 매핑하는 방법 REST API를 개발하다 보면 외부 API를 호출하고 그에 대한 예외를 처리해야 하는 상황이 자주 발생한다.외부 API에서 내려주는 HTTP 상태 코드와 에러 메시지를 내 서비스의 예외 처리 방식과 일관되게 매핑해야 한다.이 글에서는 외부 API 예외를 내 서비스에서 어떻게 처리하면 좋을지, 그리고 확장 가능한 예외 처리 구조를 어떻게 설계할지 정리해본다. 📒 외부 API 예외 응답의 형태일반적으로 외부 API는 자체적으로 정의한 에러 코드, 에러 메시지를 반환한다.국회 api 예시를 보자.자체적으로 정의한 에러코드, 에러메세지를 반환하고 있다.http 상태코드는 api 마다 다른데, 국회 api는 에러여도 200 ok로 온다. 📒 내 서비스에서의 예외 처리 방식 private void va.. 스프링 2025. 2. 3. 트랜잭션 내부에서 외부 api 호출하지 말자 // CongressmanService @Transactional public NewsListDTO findNewsList(String encryptedCongressmanId, Pageable pageable) { final Long congressmanId = aesUtil.decrypt(encryptedCongressmanId); final Congressman congressman = findById(congressmanId); // 외부 api 호출 final String response = getApiResponse(buildUrlStringForNews(pageable, congressman)); .. 스프링 2025. 2. 3. 조기축구 스쿼드메이커 만들기 얼떨결에 조기축구 팀 운영진? 에 합류하게 되면서 스쿼드를 짤 일이 생겼는데 직접 짜려니까 생각보다 너무 머리아팠다. 그래서 스쿼드빌더를 만들었다. 가장 익숙한 java를 사용했고, 어차피 우리팀만 쓸 거니까 launch4j를 사용해 exe 파일로 만들어서 공유했다. 알고리즘은 1쿼터에는 입력 순으로 원하는 포지션에 배치해준다. 배치할 때 쿼터당 `선호 포지션 배정 : 2점, 비선호 포지션 배정 : 1점 으로 점수를 매겨서 다음 쿼터 짤 때는 점수가 낮은 사람부터 원하는 포지션에 넣어줬다. 그리고 참석율에 따라 배정 쿼터 수를 3쿼터, 2쿼터로 나눴다. (우리 팀의 규칙이다) GUI는 대충 동작만 하면 되기 때문에 gpt한테 맡겼다. 나름 잘 만들어줬다. ㅋㅋ txt 파일로 선수이름, 불참횟수, 선호.. Java 2025. 1. 27. 눈사람 😒 일얘기어제는 신규 메세지템플릿 규격에 맞춰서 시험발송 테스트, 오늘은 신규 메세지템플릿 이미지 등록 시 규격에 맞게 리사이징 하는 기능을 개발했다. jpg, gif 확장자에 대해 개발함. 일상 2025. 1. 22. spring 요청 Validation 검증, 예외 처리 서론최근 tdd 방식으로 사이드프로젝트를 진행중이다.tdd 방식은 시간도 더 걸리고 귀찮지만 이미 테스트코드가 있으니까 리팩터링 시 chat gpt를 적극 활용할 수 있다. 코드를 수정할 때도 테스트 딸깍으로 사이드 이펙트를 확인할 수 있어서 좋다. 또, 실패 테스트 작성 과정에서 예외 처리에 대해 신경쓰게 되어 꼼꼼한 예외처리가 가능해지는 것 같다. 컨트롤러에서 요청값을 받을 때 적용한 예외처리에 대해 간단하게 정리해보고자 한다. Bean Validation @GetMapping("/{encryptedCongressmanId}") public ResponseEntity ratingList( @PathVariable String encryptedCongressmanId, .. 스프링 2025. 1. 16. 데스크세팅 신년맞이+이사기념 데스크세팅을 해보았다. 키보드 : 한성gk993b마우스 : 로지텍lift노트북 Ctype 분배기 : 9만9천원짜리 쿠팡에서구매 회사에서는 mk950 키마세트를 쓰는데 매우 만족중이다. 개인 노트북 업무용 노트북 간 이지스위칭이 엄청 편하다. 몽이는 새 집에 아주 잘 적응했다. 집 평수는 같은데 체감상 더 넓게 느껴져서 몽이도 좋아하는 것 같다.얼마전에 회사 분들한테 몽이 사진을 보여줬는데 다들 귀엽다고 해주셔서 기분이 좋았다 ㅎ.ㅎ 일상 2025. 1. 2. L4 스위치 회사에서 L4 스위치 관련해 이슈가 있었는데 관련 지식이 부족해 찾아보던 중 잘 정리된 포스팅이 있어 읽고 간단하게 정리해보았다. L4 스위치란?L4 스위치는 서버 부하 분산=로드빌런싱 을 처리하는 장치다뿐만 아니라 프로토콜(TCP, UDP, HTTP 등)의 헤더를 분석한 정보를 토대로 부하 분산을 실시하고, source ip, destination ip를 NAT 해서 보낼 수 있다.관련 용어L4 스위치는 외부 접속용 공인 IP와 서버와 통신하기 위한 사설 IP를 갖게된다모든 요청은 L4스위치를 통해 서버로 들어오므로, 서버는 공인 ip가 필요없고 사설 ip만 갖는다.외부에서 서버 ip를 알 수 없고 악의적 공격이 제한된다.Virtual ServerL4 스위치의 Virtual Server : 외부에서 .. infra 2024. 12. 31. 컨트롤러 단위 테스트 시 mock 객체 stubbing을 해야할까 컨트롤러 단위 테스트를 작성할 때는 @WebMvcTest 등으로 웹 계층의 빈만 주입받는다.이 때 컨트롤러가 의존하는 객체(서비스 등)는 @MockBean 등으로 만들어준다.mock 객체 stubbing을 해야한다나는 이제까지 mock 객체의 메서드가 호출된다면 stubbing을 해줘야 한다고 생각했다.예를 들어 컨트롤러 단위 테스트 시에 서비스는 stubbing을 통해 정상작동하는 것을 보장해야 컨트롤러에 대해서만 테스트 할 수 있다고 생각했다.@WebMvcTest(MessageController.class)class MessageControllerTest { @Autowired private MockMvc mockMvc; @MockBean private MessageService.. 테스트 2024. 12. 17. 개발보안 취약 사례 및 대응방안 - 2 지난 글에 이어서 sql injection과 xxs등 이외 최약 사례에 대해 알아보자. sql injectionsql injection은 db 질의와 관련된 웹 파라미터에 악성 sql을 주입해 db, 서버를 공격하는 것이다. 여러가지 종류가 있는데, 하나씩 확인하며 이해해보자.sql injection 종류error based sql injection웹 페이지 응답 데이터에 dbms error message가 응답될 때 할 수 있는 공격 기법이다. dbms 에러를 유발할 수 있는 입력값을 입력하고 에러 메세지를 통해 정보를 탈취한다. blind sqlsql where 절 조건이 true일때와 false 일 때 응답값 유무를 확인해 취약점을 찾고 추가적인 공격을 통해 데이터를 얻는 방식이다. select *.. 시큐어코딩 2024. 12. 4. https 취약점 https를 사용하면 안전하다고 생각해서 비밀번호 등을 암호화 하지 않는 경우가 있다. 하지만 https를 사용하더라도 중간자 공격에 의해 비밀번호가 탈취될 수 있다. https의 동작 대칭 키와 비대칭 키대칭 키 방식은 하나의 대칭 키로 암호화, 복호화를 하는 것이다.최초 접근 시에 서버가 클라이언트로 대칭 키를 전달해 줘야 하는데 이 때 탈취당할 수 있다.비대칭 키 방식은 서버가 공개 키/개인 키를 갖고 있다가 클라이언트 요청 시 공개키를 주는 방식이다.대칭 키 방식에 비해 성능이 저하된다. ssl을 활용한 https보안성과 성능 두마리 토끼를 잡기 위해 실제로는 두 방식을 섞어서 사용한다. 서버(사이트)는 서버의 공개 키와 사이트 정보를 인증기관에 전달인증기관은 (서버 공개키 + 사이트 정보)를 인.. 시큐어코딩 2024. 12. 1. 개발보안 취약 사례 및 대응 방안 - 1 kt ds에서 진행하는 개발자를 위한 보안실무 교육을 이틀간 듣고 간단하게 정리해보고자 한다. 클라이언트 기반 인증 우회 url 직접 접근으로 인증 flow 우회 공격자가 인증에 성공할 시 접근하는 url이 /member/success.php 안다면, 해당 url로 직접접근해서 인증을 우회하는 방식이다. 인증 값 조작을 통한 인증 우회 인증 모듈 결과를 클라이언트 영역에서 조작하는 공격 방식예를 들어 임의의 sms 인증값을 입력하고 BurpSuite같은 웹 프록시 도구로 JS 코드를 조작(isAuth : false를 isAuth : true로 조작하거나, 실패 응답코드를 성공 응답코드로 조작하는 등)하여 로그인에 성공한다.응답 값에 인증번호 노출sms 인증 번호가 js상에 노출되는 경우 휴대전화 없이 s.. 시큐어코딩 2024. 11. 24. 이전 1 2 3 4 ··· 6 다음