# Input Validation

Record: `arch:input-validation`
Kind: mechanism
Layer: [Security Core](https://banes-lab.com/records/layer/security-core.md)
Severity: mandatory
Scope: API, boundary, function
Canonical: https://banes-lab.com/ontology#arch-input-validation

## Repair

- Refactored by: Add Validator, Add Schema
- Detected by: missing boundary validators
- Violated by: raw external data entering core logic
- Measured by: validation coverage
- Enforced by: validation middleware, [tests](https://banes-lab.com/records/lex/tests.md)

## requires

- [Validation Rules](https://banes-lab.com/records/lex/validation-rules.md)
- [Schema](https://banes-lab.com/records/lex/schema.md)

## reinforces

- [Security](https://banes-lab.com/records/lex/security.md)
- [Correctness](https://banes-lab.com/records/arch/correctness.md)

## enables

- [Fail Fast](https://banes-lab.com/records/arch/fail-fast.md)

## conflicts-with

- [Trusting External Input](https://banes-lab.com/records/lex/trusting-external-input.md)

## tensions-with

- [Input Flexibility](https://banes-lab.com/records/lex/input-flexibility.md)

## tensions

- [Input Validation Input Flexibility](https://banes-lab.com/records/tension/input-flexibility-input-validation.md)

## contracts

- [Boundary Validation Over Unvalidated Input](https://banes-lab.com/records/algo/no-unvalidated-input.md)

## referenced-by

- [Preconditions](https://banes-lab.com/records/arch/preconditions.md)
- [Defensive Programming](https://banes-lab.com/records/arch/defensive-programming.md)
- [Parameterized Queries](https://banes-lab.com/records/arch/parameterized-queries.md)
