성공과 실패의 응답 형태를 고정해, 오류 경로로 내부 정보가 새지 않게 합니다.
응답 형태를 고정하지 않으면 정보는 언제나 오류 경로로 샙니다. 잡히지 않은 예외가 그대로 응답 본문이 되면 스택 트레이스, 절대 경로, 내부 주소가 호출자에게 넘어갑니다. 잘못된 입력으로 오류를 일으키기만 해도 내부 구조가 읽힌다는 뜻입니다. 실패 문장을 닫힌 코드 집합에서만 고르게 하면 임의의 문자열이 응답에 실릴 통로가 아예 없어집니다.
코드마다 상태와 문장을 하나씩 정해 두고, 호출자가 메시지를 직접 만들지 못하게 합니다.
예외 원문은 응답으로 나가지 않고 기록에만 남습니다. 기록할 때도 내부 주소와 자격 증명은 지웁니다.
허용 목록에 없는 필드를 무시하지 않고 거부해, 오타가 난 요청이 성공한 것처럼 보이지 않게 합니다.
아래 증명은 글로 된 설명이 아닙니다. 버튼을 누르면 이 서버가 지금 직접 계산합니다.
실패 메시지는 호출자가 직접 쓰지 않습니다. 미리 정해 둔 오류 코드 표의 문장만 응답에 나가므로 임의의 문자열이 실릴 수 없습니다.
표준 문서에 실린 테스트 벡터를 그대로 넣어 같은 값이 나오는지 확인합니다.
가장 흔한 유출 경로는 잘못된 입력으로 오류를 일으켰을 때 서버가 오류 메시지로 내부 구조를 드러내는 것입니다. 이 모듈에는 예외 내용이 응답으로 전달되는 경로가 아예 없습니다.
막아야 할 입력을 실제로 넣고 거부되는지 확인합니다.
규격 원문을 먼저 실었습니다. 사례는 이 분야에서 실제로 보안이 뚫린 일을 다룬 자료입니다.
상태 코드의 의미를 정의한 원문입니다. 코드와 상태를 묶은 표의 근거가 됩니다.
오류 본문을 표준화하는 방식입니다. 기계가 읽는 코드와 사람이 읽는 문장을 나누는 기준이 됩니다.
오류 경로로 내부 정보가 새는 전형적인 방식과 그것을 막는 순서를 다룹니다.
다음 단계
소비 시스템의 라우트 계층에 어댑터로 연결하고, 오류 응답에 원문이 실리지 않는지 실제 트래픽에서 확인합니다.