점검 가이드 · 보안
주소 번호만 바꾸면 남의 정보가 보이는 문제 (IDOR)
2026-10-24 기준
세 줄 요약
- /orders/123 을 /orders/124 로 바꿨을 때 남의 주문이 보이면, 서버가 "이 사람이 주인인가"를 확인하지 않는 것입니다.
- 로그인 확인만으로는 부족합니다. 데이터 하나하나마다 주인인지 확인해야 합니다.
- 번호를 길고 무작위로 바꾸는 것은 보조 수단일 뿐, 주인 확인을 대신하지 못합니다.
어떤 문제인가요
쇼핑몰에서 내 주문 상세를 열면 주소가 example.com/orders/123 처럼 나옵니다. 여기서 123 을 124 로 바꿨을 때 다른 손님의 이름·주소·전화번호가 보인다면, 이것을 IDOR(안전하지 않은 직접 객체 참조)라고 부릅니다.
보안 단체 OWASP 는 API 보안 위험 목록에서 이와 같은 문제(객체 수준 권한 확인 실패)를 첫 번째로 꼽고 있습니다. 화면에서는 잘 안 보이지만, 주소나 요청 내용만 바꾸면 되기 때문에 누구나 쉽게 시도할 수 있습니다.
AI 가 만든 앱에서 자주 생기는 이유
- "로그인한 사람만 볼 수 있게"만 만들고, "그중에서도 주인만"은 빠뜨리는 경우가 많습니다.
- 화면에서는 내 목록만 보여 주니 문제가 없어 보입니다. 하지만 상세 보기·수정·삭제 API 는 번호만 받으면 그대로 처리합니다.
- 사진·영수증 같은 파일 주소가 누구나 열 수 있는 공개 주소로 저장되는 경우도 있습니다.
- 보기만이 아니라 고치기·지우기에서도 같은 문제가 생깁니다. 남의 주문을 취소하거나 남의 글을 지울 수 있게 됩니다.
직접 확인하는 방법
이 시험은 내가 만든 사이트와 시험 계정으로만 하세요. 남의 사이트에서 하면 법적 문제가 될 수 있습니다.
- 시험 계정 A 로 주문·글·파일 같은 데이터를 하나 만들고, 상세 화면의 주소를 복사합니다.
- 시험 계정 B 로 로그인해 그 주소를 엽니다. A 의 내용이 보이면 문제입니다.
- 로그아웃한 상태에서도 같은 주소를 엽니다.
- 수정·삭제 단추가 있다면 B 로 A 의 것을 고치거나 지울 수 있는지도 해 봅니다(반드시 시험 데이터로만).
고치는 방법의 핵심
- 서버가 데이터를 찾을 때 번호만으로 찾지 말고 "이 번호이면서 주인이 지금 로그인한 사람인 것"으로 찾습니다.
- 로그인한 사람이 누구인지는 브라우저가 보낸 값(예: userId=7)이 아니라, 서버가 가진 로그인 정보(세션)에서 꺼냅니다.
- 보기·고치기·지우기·파일 내려받기 모든 길에 같은 확인을 넣습니다. 하나라도 빠지면 그곳이 뚫립니다.
- 번호를 무작위 긴 문자열(UUID 등)로 바꾸면 추측은 어려워지지만, 주소가 한 번 새면 그대로 열립니다. 주인 확인과 함께 씁니다.
내 AI 코딩 도구에 이렇게 맡겨 보세요
내 AI 에게 그대로 붙여 넣기이 프로젝트에서 IDOR(남의 데이터 접근) 문제를 찾아 줘.
1) ID 를 받는 모든 API 와 페이지(보기·수정·삭제·파일 내려받기)를 표로 나열해 줘.
2) 각각에서 서버가 "지금 로그인한 사람이 이 데이터의 주인(또는 권한 있는 사람)인지"를 확인하는지, 확인한다면 어느 줄인지 적어 줘.
3) 로그인한 사람을 브라우저가 보낸 값(요청 본문·주소의 userId 등)으로 판단하는 곳이 있으면 알려 줘.
4) 빠진 곳은 세션의 사용자 ID 로 주인을 확인하도록 고치는 수정안을 만들어 줘. 남의 것이면 404 로 응답하게 해 줘.
고치기 전에 바꿀 목록부터 보여 줘.
자주 묻는 질문
주소에 번호 대신 긴 무작위 문자열을 쓰면 해결되나요?
추측하기 어려워질 뿐입니다. 공유한 링크나 기록으로 주소가 새면 그대로 열립니다. 서버에서 주인인지 확인하는 것이 본 해결책입니다.
남의 것을 열었을 때 403 과 404 중 무엇으로 답해야 하나요?
어느 쪽이든 내용을 보여 주지 않는 것이 핵심입니다. 404(없음)로 답하면 그 번호의 데이터가 있다는 사실조차 알려 주지 않아 많이 씁니다.
이미 남의 정보가 보이는 상태로 운영했어요.
먼저 고치고, 접속 기록에서 다른 사람이 실제로 열어 본 흔적이 있는지 확인하세요. 개인정보가 새어 나갔다면 개인정보 보호법에 따른 통지·신고 의무가 생길 수 있으니 전문가와 상의하세요.
내 코드에 이런 문제가 있는지, AI 세 개가 따로 봐 드려요.
삼심은 Claude·GPT·Gemini 가 서로 모르게 점검하고 지적을 교차 확인해, 개발부터 법률까지 8개 분야의 고칠 순서와 수정 지시문을 드립니다.
함께 보면 좋은 글
참고
이 글은 일반적인 정보이며 법률·보안 자문이 아닙니다. 서비스마다 상황이 다르니 고치기 전에 확인하세요.