agentsclimarketplace

Input validation

Skill Amey-Thakur/AI-SKILLS/skills/security/input-validation

Plug-and-play skills and prompts for every AI coding agent

Install
npx -y skills add Amey-Thakur/AI-SKILLS --skill input-validation

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • 21 days oldThe repository was created 21 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
  • 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Validate untrusted input at every trust boundary with allowlists, canonicalization, and hard limits so malformed data never reaches logic. Use when accepting data from requests, files, uploads, or third-party APIs.

SKILL.md

2.8 KB, 605 tokens by cl100k_base, as published. Nobody here has run it

Input validation

Input validation is the wall between the outside world and code that trusts its arguments. It fails when validation is scattered, negative (blocklists), or run after the value has already been used. Do it once, at the boundary, before anything downstream reads the value.

Method

  1. Validate at the boundary, not deep in the stack. Check input where it enters: the request handler, the deserializer, the file parser. Once a value passes the wall, downstream code may assume it is well-formed. Validation buried three calls deep leaves the first two calls exposed.
  2. Prefer allowlists over blocklists. Define what is legal (a set of country codes, ^[a-z0-9_]{3,32}$ for a username, an enum of statuses) and reject the rest. Blocklists lose: attackers find the encoding, the Unicode homoglyph, or the case you did not enumerate.
  3. Canonicalize before you check. Normalize first, validate second, or an attacker slips past with an alternate encoding. Decode percent- encoding, resolve .. and symlinks in paths, apply Unicode NFC, lowercase the host. Validating the raw form then using the decoded form is the classic path-traversal bug.
  4. Cap length, count, and depth. Set a maximum on every string, array, upload, and nested-JSON depth. A 2 GB "username" or a 10,000-level nested object is a denial of service you accepted by omission. Reject at the limit with a clear error.
  5. Check type and range, then parse to a typed value. Confirm the integer is an integer within bounds, the date parses, the enum is a member. Convert to the real type at the boundary so downstream code handles int and Date, not str.
  6. Fail closed with a specific error. On invalid input, reject and stop; do not coerce, truncate silently, or "fix" it. Say which field failed and why, but never echo the raw bad value into an error page unescaped.

Checks

  • Does each field have an explicit rule, or does some input reach logic only because nothing rejected it?
  • Do you canonicalize before validating everywhere a value is later decoded?
  • Is there a length or size cap on every unbounded input, including request bodies?

Boundaries

Input validation shrinks attack surface; it does not replace output encoding or parameterized queries. A validated string can still be dangerous in a SQL statement or an HTML page, so defend those sinks separately (see sql-injection-defense and xss-defense). Ownership checks (does this user own this order?) belong with authorization, not here.

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 326,970. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.