데이터 검증은 값이 요구한 형식과 업무상의 조건을 만족하는지 확인하는 과정이다. [[JSON 스키마]]의 구조 검사와 필드 사이의 관계 확인을 함께 생각할 수 있다. ([OWASP 입력 검증 안내](https://cheatsheetseries.owasp.org/cheatsheets/Input_Validation_Cheat_Sheet.html)) - 날짜 형식이 맞아도 종료일이 시작일보다 앞설 수 있다. 문법과 값의 관계를 각각 검사한다. ([구문과 의미 검증](https://cheatsheetseries.owasp.org/cheatsheets/Input_Validation_Cheat_Sheet.html)) - 필수 여부, 범위, 길이, 허용되는 선택지를 명시한다. 잘못된 값을 알아서 고친 뒤 통과시키기보다 무엇이 틀렸는지 알리는 [[검증 오류 메시지]]가 필요하다. ([필드별 조건과 오류](https://cheatsheetseries.owasp.org/cheatsheets/Input_Validation_Cheat_Sheet.html)) - 올바른 계정 번호가 입력됐다는 사실은 그 계정에 접근할 권한까지 뜻하지 않는다. 데이터의 조건과 권한 검사는 별개다. ([검증과 권한의 구분](https://cheatsheetseries.owasp.org/cheatsheets/Input_Validation_Cheat_Sheet.html)) ## 기타 등등 - 아포스트로피를 일괄 금지하면 실제 이름까지 거부할 수 있다. 금지 문자 목록만으로 입력의 안전성을 판단할 수 없다. [출처](https://cheatsheetseries.owasp.org/cheatsheets/Input_Validation_Cheat_Sheet.html) - 파싱 뒤의 스키마 검사는 파싱 도중 이미 소모한 자원을 되돌리지 못한다. 크기와 중첩 깊이 제한은 읽는 단계에도 필요하다. [출처](https://cheatsheetseries.owasp.org/cheatsheets/Input_Validation_Cheat_Sheet.html) #데이터 #검증 #소프트웨어