데이터의 유효성 검사는 코드 전반에 걸쳐 유효성을 증명하는 것이 아니다. 클라이언트가 입력 유효성을 검사할 수 있지만, 예를 들어 타사 앱에서는 유효성 검사 없이 요청을 보낼 수도 있다. 웹 요청을 처리하는 코드에서는 유효성 검사를 할 수 있지만, API 코드와 같은 다른 앱에서는 유효성 검사 없이 서비스 코드를 호출할 수 있다. 마찬가지로 데이터베이스 코드는 서비스 계층이나 유지 관리 작업과 같은 여러 소스의 요청을 받을 수 있다. 따라서 데이터베이스에 올바른 레코드를 삽입하는지 확인해야 한다. 그림 2-11은 애플리케이션에서 입력에 대한 유효성을 검사하는 지점을 보여준다.
▲ 그림 2-11 검증되지 않은 데이터 소스와 반복적으로 데이터를 검증해야 하는 위치
이렇게 하면 결국 코드의 여러 부분에서 입력에 대한 전반적인 유효성 검사를 할 수 있다. 그리고 유효성 검사가 일관성이 있는지 확인해야 한다. 식별자가 -1이거나 사용자 프로파일이 ' OR 1=1--(6.3.4절에서 살펴볼 SQL 삽입 공격)인 게시물이 입력되는 것을 원하지 않을 것이다.