요청 값 확인 전 역참조

요청 값 확인 전 역참조

설명

누락될 수 있는 요청 값을 검사하지 않고 속성 접근, 메서드 호출, 길이 계산에 사용하면 예외가 발생합니다.

잠재적 영향

  • 공격자가 필수 파라미터를 생략해 오류 응답을 유발하고, 예외 처리나 부하 조건에 따라 가용성에 영향을 줄 수 있습니다.
  • 예외 처리 방식에 따라 내부 상태나 오류 메시지가 노출될 수 있습니다.

해결 방법

  • 요청 값은 사용하기 전에 value != null, 스키마 검증, 기본값 설정으로 확인하세요.
  • 필수 요청 값은 검증 계층에서 요구 사항을 선언하고 누락 시 명확한 오류를 반환하세요.

예시

Express 5의 라우트 일부입니다. 이 버전의 res.send(number)는 숫자를 JSON으로 반환합니다.

변경 전

javascript
app.get("/length", (req, res) => {
  const id = req.query.id;
  res.send(id.length);
});

변경 후

javascript
app.get("/length", (req, res) => {
  const id = req.query.id;
  if (id == null) {
    return res.status(400).end();
  }
  res.send(id.length);
});

설명:

  • 변경 전: req.query.id나 req.body.name처럼 누락될 수 있는 요청 값을 검사하지 않고 속성 접근, 메서드 호출, 길이 계산에 사용하면 예외가 발생합니다.
  • 변경 후: 누락된 값을 400으로 거부한 뒤 길이를 읽습니다. null 검사만으로 타입과 형식까지 검증되는 것은 아니므로, 필요한 문자열 형식과 길이도 별도로 확인하세요.

참조