Skip to content
Calcrivo

Input Validation Coverage Calculator

Measure weighted input validation coverage across your parameters and estimate the injection findings still waiting in the gaps.

Inputs

parameters
parameters
parameters
parameters
parameters
parameters

Client-only validation is worth roughly 40% of the score

findings

Weighted Validation Coverage

53.0%

Coverage Grade

D — Weak

Parameters Without Allow-List Validation

270

Expected Injection Findings

32.4

Weakest Validation Control

Fuzz or property test coverage

Residual Exposure

47.0%

Step by step

  1. Values used

    Input parameters in scope = 480 parameters; Parameters with allow-list validation = 210 parameters; Parameters with type or schema validation = 400 parameters; Parameters with length or range bounds = 330 parameters; Parameters canonicalised before validation = 150 parameters; Parameters covered by fuzz or property tests = 90 parameters; Validation enforced server-side, not only in the client = Yes; Injection findings per 100 unvalidated parameters = 12 findings

  2. Input Validation Coverage

    coverage = 0.35 × allow-list coverage + 0.25 × schema coverage + 0.15 × bounds coverage + 0.15 × canonicalisation coverage + 0.10 × fuzz coverage, each expressed as a percentage of parameters in scope.

  3. Expected findings

    expected findings = unvalidated parameters × findings per 100 unvalidated parameters ÷ 100; client-only validation scales the whole score to 40%.

  4. Weighted Validation Coverage

    = 53.0

  5. Coverage Grade

    = D — Weak

  6. Parameters Without Allow-List Validation

    = 270

  7. Expected Injection Findings

    = 32.4

  8. Weakest Validation Control

    = Fuzz or property test coverage

  9. Residual Exposure

    = 47.0

How it works

Allow-list validation carries the most weight because it is the only control that rejects the unexpected rather than trying to enumerate the dangerous, and canonicalisation is weighted alongside it because a check performed before decoding can be bypassed. Client-side-only validation is scaled to 40% since it is a usability feature, not a control. Coverage is the number that predicts your next injection finding: the parameters nobody validated are the parameters the next test will break, and this turns that into a count you can plan against.

Formulas

Input Validation Coverage

coverage = 0.35 × allow-list coverage + 0.25 × schema coverage + 0.15 × bounds coverage + 0.15 × canonicalisation coverage + 0.10 × fuzz coverage, each expressed as a percentage of parameters in scope.

allow-list coverage
Share of parameters checked against a positive pattern
canonicalisation coverage
Share decoded and normalised before checking

Expected findings

expected findings = unvalidated parameters × findings per 100 unvalidated parameters ÷ 100; client-only validation scales the whole score to 40%.

unvalidated parameters
Parameters with no allow-list validation
findings per 100
Your historical yield from testing

Frequently Asked Questions

How is Input Validation Coverage calculated?

coverage = 0.35 × allow-list coverage + 0.25 × schema coverage + 0.15 × bounds coverage + 0.15 × canonicalisation coverage + 0.10 × fuzz coverage, each expressed as a percentage of parameters in scope. Allow-list validation carries the most weight because it is the only control that rejects the unexpected rather than trying to enumerate the dangerous, and canonicalisation is weighted alongside it because a check performed before decoding can be bypassed. Client-side-only validation is scaled to 40% since it is a usability feature, not a control.

Why does Input Validation Coverage matter?

Coverage is the number that predicts your next injection finding: the parameters nobody validated are the parameters the next test will break, and this turns that into a count you can plan against.

What values do I need to enter?

This calculator takes 8 inputs: Input parameters in scope, Parameters with allow-list validation, Parameters with type or schema validation, Parameters with length or range bounds, Parameters canonicalised before validation, Parameters covered by fuzz or property tests, Validation enforced server-side, not only in the client, Injection findings per 100 unvalidated parameters. The pre-filled defaults are a realistic starting point — replace them with figures from your own environment for a result you can act on.

Is schema validation the same as allow-list validation?

No, and the gap is where bugs live. A schema proves a field is a string of at most 64 characters; an allow-list proves it matches the format that field is actually allowed to take. JSON Schema plus a per-field pattern gets you both, and the pattern is the part that stops injection.

You might also need