Day 7 Task 03 오류 검증

Task 03. 기능 오류 찾기 (Feature Validation)

사용자의 비정상 조작(연타 클릭) 또는 과거 시각 입력에 대비해 로직 취약성을 검증하고 견고한 가드(Guard) 설계를 완료합니다.

Task 03 Task 03 기능 오류 찾기 실습 가이드

📥 실습 입력 (Input)

  • day7_meeting_notes.md (회의록)

💾 실습 출력 (Output)

  • day7_robust_validation.js

1. 스토리 및 실습 배경

결제 기능 연결까지 마친 예약 앱 배포 당일 밤, 경보가 울렸습니다. 데이터베이스 예약 목록에 동일인이 동일 시간대로 중복 예약되어 서버 에러가 빗발치고 있었습니다. 소스코드를 열어보니 예약 등록 함수는 정직하게 동작했으나, 성격 급한 고객이 결제 확인 페이지에서 '예약 확정' 버튼을 따닥- 두 번 연속 클릭(Double Click)하자, 중복 제출을 예방하는 락(Lock) 장치가 없어 디비에 중복 데이터가 삽입된 것이 원인이었습니다.

개발 완료 버튼을 눌렀다 하더라도, 비정상적이거나 예외적인 동작이 개입하면 기능은 순식간에 망가집니다. 이번 실습에서는 Codex AI를 오디터로 기용하여, 작성 완료한 예약 및 로그인 처리 함수 파일 `day7_feature_validation.js`를 대상으로 중복 클릭, 특수문자 삽입, 비정상 세션 만료 등의 이상 징후 상황을 전제로 모의 테스트를 실시하고 결함 유발 가능 지점의 차단 요령을 제공받습니다.

2. 학습 목표

  • 올바른 데이터 입력 시나리오 외에 이상 징후(예외 상황)로 유발되는 기능 결함을 예단할 수 있다.
  • 동일 데이터 중복 진입 방지(Debounce/Throttle) 및 입력값 차단 가드 코드를 설명할 수 있다.
  • AI의 취약점 분석 결과를 활용하여 오류를 선제 방어하는 튼튼한 로직을 작성할 수 있다.

🛠️ 실제 따라 하기 실습 가이드

  1. 실습용 파일 생성: 아래 다운로드 버튼을 눌러 day7_meeting_notes.md 파일을 automation/ 폴더 내에 저장합니다.
  2. Codex 취약성 점검: Codex Client에 에러 유발 코드를 전달하여 날짜 유효 기간 대조 및 버튼 잠금 장치를 작성하도록 요구합니다.
  3. 락(Lock) 메커니즘 테스트: 생성된 이중 서브밋 잠금 변수 `isSubmitting` 코드와 disabled 요소를 적용한 뒤 테스트하여 중복 등록이 차단되는지 확인합니다.

실습 자료 다운로드

Codex 요청 프롬프트

Task 03 Prompt
제공된 day7_feature_validation.js 파일 내의 예약 신청 로직을 검토해 주세요. 1) 예약 요청의 중복 유입(버튼 연타) 취약점, 2) 예약 일자의 과거 시점 신청 에러 가능성을 검출하고, 이를 방어하기 위해 비활성화(Disabled state) 처리와 날짜 유효 기간 대조문이 추가된 최종 검증 코드를 제안해 주세요.

4. 결과물 예시

Codex는 회의 기록을 분석해 아래와 같이 정규화된 데이터 엔티티 매핑 및 Mermaid ERD 스크립트를 출력합니다.

파일명가드 로직동작 유형방지 결함
day7_robust_validation.jsisSubmitting 락 변수 및 날짜 대조버튼 disabled 설정, 과거일자 경고중복 연타 및 과거날짜 임의 접수

5. AI 활용 포인트

  • 이상 조작(Abuse) 예측: 정상 데이터 통로가 아닌 사용자 행동(연타, 빈 입력, 잘못된 형식)이 유도할 스크립트 충돌 지점을 추정해 줍니다.
  • 유효성 정책 설계: 과거 시각 차단 등 비즈니스 논리 상 당연히 차단해야 할 논리 구조(Logic Boundary)를 미리 점검해 작성해 줍니다.