모든 읽기와 쓰기에 소유 범위를 자동으로 적용해, 남의 데이터를 조회하는 일을 구조적으로 막습니다.
여러 소유자가 한 저장소를 나눠 쓸 때 질의마다 소유 조건을 손으로 붙이면 언젠가 한 군데를 빠뜨립니다. 조건이 빠진 질의는 오류 없이 다른 소유자의 행까지 돌려주므로 실패가 드러나지 않습니다. 그래서 조건을 붙이는 일을 호출자가 아니라 데이터 접근 계층이 맡고, 명시적으로 면제한 경우에만 조건을 빼서 기본값이 차단이 되게 합니다.
모든 읽기에 소유 범위 조건을 넣어, 조건을 빠뜨린 질의도 전체 데이터를 보지 못하게 합니다.
면제 목록에 없는 모델에는 범위가 자동으로 적용되므로, 새로 추가한 데이터도 처음부터 보호됩니다.
식별자만으로 이어진 관계 참조는 범위 조건을 거치지 않으므로 따로 찾아내 막습니다.
아래 증명은 글로 된 설명이 아닙니다. 버튼을 누르면 이 서버가 지금 직접 계산합니다.
범위 조건을 붙이는 쪽은 호출자가 아니라 접근 계층입니다. 질의를 어떻게 쓰든 범위 조건이 빠진 채로 나가는 일은 없습니다.
표준 문서에 실린 테스트 벡터를 그대로 넣어 같은 값이 나오는지 확인합니다.
조건을 빠뜨린 요청과 남의 데이터를 달라는 요청은 다릅니다. 앞의 것은 조건을 채워 주고, 뒤의 것은 거부합니다. 남의 범위를 조용히 고쳐 주면 잘못된 호출이 끝내 드러나지 않습니다.
막아야 할 입력을 실제로 넣고 거부되는지 확인합니다.
규격 원문을 먼저 실었습니다. 사례는 이 분야에서 실제로 보안이 뚫린 일을 다룬 자료입니다.
저장소 계층에서 같은 보호를 거는 방법입니다. 응용 계층과 이중으로 걸 때 기준이 됩니다.
식별자만 바꿔 남의 데이터를 읽는, 가장 흔한 실패 유형과 그 탐지 방법을 다룹니다.
기본값을 차단으로 두는 원칙과, 계층마다 어디서 검증할지에 대한 실무 지침입니다.
다음 단계
소비 시스템의 데이터 접근 계층에 연결하고, 면제 목록과 실제 스키마가 어긋나지 않는지 빌드 단계에서 검사합니다.