NIST SP 800-53 Rev. 5 · SI-10

Information Input Validation

US National Institute of Standards and Technology (NIST) · cited in 228 of our lessons

Explanation

What it asks for. Systems must check the validity of defined information inputs, such as syntax and content, to prevent malformed or malicious input from causing harm.

In practice. Doing this well means validating input on the server side against allowlists of expected formats, lengths and types, using parameterised queries, and encoding output appropriately. Secure coding standards and developer training should make these patterns the default, with static and dynamic testing to confirm them. Auditors look for coding standards, test results and remediation of injection findings. The OWASP Top 10 and ASVS describe this area in depth.

Common gaps. Relying on client-side validation alone, inconsistent validation across APIs and internal services assumed to be trusted are common gaps. Legacy applications frequently remain vulnerable to injection.

The official text
Check the validity of the following information inputs: [Assignment: organization-defined information inputs]. Discussion: Checking the valid syntax and semantics of system inputs—including character set, length, numerical range, and acceptable values—verifies that inputs match specified definitions for format and content. For example, if the organization specifies that numerical values between 1-100 are the only acceptable inputs for a field in a given application, inputs of "387," "abc," or "%K%" are invalid inputs and are not accepted as input to the system. Valid inputs are likely to vary from field to field within a software application. Applications typically follow well-defined protocols that use structured messages (i.e., commands or queries) to communicate between software modules or system components. Structured messages can contain raw or unstructured data interspersed with metadata or control information. If software applications use attacker-supplied inputs to construct structured messages without properly encoding such messages, then the attacker could insert malicious commands or special characters that can cause the data to be interpreted as control information or metadata. Consequently, the module or component that receives the corrupted output will perform the wrong operations or otherwise interpret the data incorrectly. Prescreening inputs prior to passing them to interpreters prevents the content from being unintentionally interpreted as commands. Input validation ensures accurate and correct inputs and prevents attacks such as cross-site scripting and a variety of injection attacks.

From NIST SP 800-53 Rev. 5, a work of the US government in the public domain.

Lessons that cite it

Real incidents where this item mattered: the latest 12 of 228.