본문 바로가기

전체 글

(42)
안전하게 비밀번호 생성하기 - HOTP 1. 문제 정의 업브렐라 보관함은 네트워크 통신이 없는 상태에서 비밀번호를 생성해야 합니다. 이에 대한 해결책으로 HOTP를 사용하여 비밀번호를 생성하기로 결정하였습니다. 2. OTP (One - Time - Password) OTP는 무작위 번호 약속 알고리즘에 따라 (시간 혹은 카운터에 따라) 변경되는 추정할 수 없는 비밀번호 생성을 이용하는 보안 시스템입니다. 비밀번호가 1회용이라 노출되어도 재사용이 불가능하며, 비밀번호를 숨겨진 알고리즘을 이용하여 생성해내므로 서버와의 접속 없이도 생성이 가능하여 중간 과정에서 패킷이 유출되는 위험을 없앨 수 있습니다. OTP는 크게 HMAC을 기반으로 하는 HOTP와 시간을 기반으로 하는 TOTP로 나뉘게 됩니다. 2 - 1 TOTP (Time Based - O..
Spring Test - H2 적용하기 1. 문제 정의 지난 프로젝트에선 모킹에 대한 학습을 위해 테스트 코드는 DB 연동을 하지 않았습니다. 따라서 이번 프로젝트에선 Classist 입장에서 테스트를 진행해보기 위해 DB를 연동한 테스트를 진행하려 합니다. 하지만 테스트를 실제 서비스중인 DB로 진행하게 된다면 예측할 수 없는 에러가 생길 수 있기에, H2 DB를 사용하여 테스트를 진행해보고자 합니다. 2. H2 설정 우선 build.gradle에 의존성을 추가해줍니다. testImplementation group: 'com.h2database', name: 'h2', version: '1.4.200'다음으로 test - resources - application-test.yml 파일을 생성해줍니다..
코드 개선기 - YonseiGolf Email API 1. 문제 정의 연세대학교 골프동아리는 지원자의 합격 결과를 이메일로 공지하고 있습니다. 그런데 기존 API는 합격, 불합격자의 api uri를 다르게 사용하고 있어서 불필요한 코드의 중복이 발생하였습니다. @PostMapping("/admin/forms/documentPassEmail") public ResponseEntity sendDocumentPassEmail() { applicationService.sendDocumentPassEmail(); return ResponseEntity .ok() .body(new CustomResponse( "success", 200, "연세골프 지원서 서류 합격자 이메일 전송 성공" )); } @PostMapping("/admin/forms/finalPassEma..