이 PoC는 기능 나열이 아니라 공격 시도 → QR 미발급 → 관리자 화면에 거부 사유 표시를 2분 안에 보여 주는 영업 데모입니다. 판정은 앱이 아니라 서버만 합니다.
시연은 브라우저 두 개(또는 탭 두 개)를 권장합니다. 왼쪽 데모, 오른쪽 관리자.
계정 정보는 시연 담당자에게 별도로 전달하세요. 이 페이지에는 비밀번호를 표시하지 않습니다.
| 아이디 | 역할 | 비고 |
|---|---|---|
| assistant1 | 조교 | 기기 DEV-AAAA-1111 |
| assistant2 | 조교 | 기기 DEV-BBBB-2222 |
| manager1 | 점장 | 강남 캠퍼스만 |
| hr1 | 인사 | 전체 지점 |
| # | 조작 | 기대 결과 |
|---|---|---|
| 1 | 정상(강남) → 출근 | QR 발급, 20초 카운트다운 |
| 2 | /scan 에서 스캔 | 승인. 관리자 화면에 즉시 표시 |
| 3 | 같은 QR 다시 스캔 | 거부: 이미 사용된 QR |
| 4 | QR 발급 후 25초 대기 → 스캔 | 거부: 만료 |
| 5 ★ | 서울역(반경밖) → 출근 | 거부: 반경 밖 + QR 미발급 |
| 6 ★ | 모의위치 ON → 출근 | 거부: 모의위치 + QR 미발급 |
| 7 | 다른 기기 → 출근 | 거부: 등록되지 않은 기기 |
| 8 | /admin/records 확인 | 원본 시각과 09:00 표시값(보정) 비교 |
5·6번이 가장 중요합니다. “공격해도 QR이 안 나온다”가 화면에 보여야 합니다.
체크박스와 좌표는 직접 수정해도 됩니다. 앱이 보낸 값은 “주장”일 뿐, 결론은 서버가 냅니다.
OUT_OF_RANGE — 지점 반경 밖MOCK_LOCATION_SUSPECTED — 모의 위치DEVICE_NOT_REGISTERED — 미등록 기기TOKEN_EXPIRED — QR 20초 만료TOKEN_ALREADY_USED — 이미 소각된 QRDEVICE_ROOTED — 루팅/탈옥LOW_GPS_ACCURACY — 정확도 100m 초과DUPLICATE_PUNCH — 10분 내 동일 유형 중복attendance_events)은 수정·삭제되지 않습니다. 보정도 별도 기록입니다.