가상 기록 두 개 준비하기

이 글은 가상의 내용을 설명하는 문서형 학습 예제입니다. 아래 계정, 고객, 계약, 금액은 모두 가상입니다. 자신의 연습 프로젝트에서 이 항목들을 실행한 뒤 실제 결과를 기록할 수 있습니다.

연습 계정 조회를 허용한 고객 기록 계약 번호 금액
A A-001 HT-A-01 10000 CNY
B B-001 HT-B-01 20000 CNY

첫 버전은 로그인 후 기록 번호로 계약을 조회하고, 해당 계정에 허용된 기록만 보여주는 것입니다. 추가, 수정, 내보내기는 만들지 않습니다.

문제가 생길 수 있는 방식

로그인은 있지만 API가 입력한 기록 번호만으로 조회한다고 가정해 봅시다. A가 A-001을 넣으면 자신의 계약이 나오고, B-001을 넣어도 B의 계약이 반환됩니다.

이 가정에서는 조회에 데이터 접근 범위 제한이 빠져 있습니다. 화면에 A의 고객만 표시해도 API를 보호할 수는 없습니다. 요청을 다른 방식으로 보내거나 바꿀 수 있기 때문입니다.

서버에서 조회하는 순서

  1. 검증된 로그인 상태에서 현재 신원을 가져옵니다. 로그인하지 않았다면 제한된 자료 읽기를 거부합니다.
  2. 그 신원에 허용된 범위 안에서 입력 번호에 맞는 기록을 찾습니다. 요청자가 직접 적어 보낸 계정 신원을 그대로 믿지 않습니다.
  3. 볼 수 있는 기록이 없다면 계약 내용이 없는 안내를 반환합니다. 화면에는 ‘조회할 수 있는 자료를 찾지 못했습니다’라고 표시할 수 있습니다.

실제 시스템은 개인, 팀, 그 밖의 업무 규칙에 따라 권한을 줄 수 있습니다. 규칙부터 적고 알맞은 데이터 구조와 구현 방식을 선택하세요.

수정 뒤 실행할 테스트 계획

아래는 테스트 계획과 예상 결과입니다. 자신의 연습 프로젝트에서 실제로 실행해야 합니다.

로그인 상태와 조작 예상 결과
A가 A-001 조회 HT-A-01, 금액 10000 CNY 반환
A가 B-001 조회 B의 계약과 금액을 반환하지 않음
B가 B-001 조회 HT-B-01, 금액 20000 CNY 반환
B가 A-001 조회 A의 계약과 금액을 반환하지 않음
로그인 없이 A-001 직접 요청 읽기를 거부하고 계약 내용을 반환하지 않음
A가 화면을 거치지 않고 B-001 직접 요청 여전히 권한을 검사하고 B의 자료를 반환하지 않음
A가 존재하지 않는 번호 입력 명확한 안내를 표시하고 다른 계약 내용은 반환하지 않음

각 시험의 계정 역할, 입력, 실제 결과를 남기세요. 화면에 보이지 않는 다른 기록이 응답 안에 포함돼 있지 않은지도 확인해야 합니다. 화면 문구만 보면 API가 과도하게 반환한 데이터를 놓칠 수 있습니다.

조회 경로가 늘어나도 같은 규칙 적용하기

검색, 내보내기, AI 질의응답을 추가한다면 모든 경로에 같은 데이터 접근 범위를 적용하는지 확인하세요. AI가 답변 전에 읽을 수 있는 자료도 시스템의 권한으로 결정해야 합니다.

이 계획은 주로 계정 간 자료 읽기를 확인합니다. 전체 프로젝트에서는 입력 처리, 수정 권한, 로그, 배포, 백업 등도 실제 기능에 맞춰 점검해야 합니다. 배포 체크리스트로 해당 항목을 보완하고, 요구사항은 한 장의 작업 설명부터 작성하세요.

자주 묻는 질문

실제 고객 프로젝트인가요?
가상의 내용을 설명하는 문서형 학습 예제입니다. 계정, 고객, 계약은 모두 연습 데이터입니다. 표는 연습 프로젝트에 적용할 테스트 계획이며, 실행을 마친 테스트 보고서가 아닙니다.
로그인이 있는데 왜 남의 자료를 볼 수 있나요?
로그인은 신원을 확인합니다. 서버의 조회에서도 그 신원에 따라 데이터 범위를 제한해야 합니다. 고객명이나 기록 번호만으로 조회한다면 로그인한 신원이 권한 판단에 실제로 쓰이지 않을 수 있습니다.

이어 읽기


15분 무료 상담 예약 수강료와 수업 범위