System Input Control Policies


FieldValue
Version1.0
Effective DateApril 2026
Review CycleAnnual
Document OwnerChief Information Security Officer (CISO)
ClassificationCONFIDENTIAL — Internal Use Only
Applicable StandardSOC 2 Type II — Security, Availability, Confidentiality

1. Purpose and Scope

This policy defines the controls applied to all system inputs accepted by QA Touch to ensure completeness, accuracy, and integrity of data entering the platform. It supports SOC 2 Processing Integrity criteria PI1.2 (Completeness) and PI1.3 (Accuracy), requiring that all inputs are complete, accurate, and authorised before processing begins.

This policy applies to all data entry mechanisms: the web application UI, REST API, file imports (Excel/CSV), webhook inbound payloads, and integration sync events from third-party systems.

2. Input Control Principles

PrincipleDefinition and Application in QA Touch
AuthorizationOnly authenticated and properly authorised users or systems may submit inputs. Authentication validated on every request; RBAC checked per operation.
CompletenessRequired fields must be present and non-empty before a record is accepted. Absence of mandatory fields results in a rejection response with field-level detail.
AccuracyInput values must conform to defined data types, formats, enumerations, and business rules. Validation is enforced at the server side regardless of client-side checks.
Server-Side PrimacyServer-side validation is the authoritative and mandatory layer. Client-side validation improves UX but cannot be bypassed to circumvent server-side rules.
Non-RepudiationAll input events are associated with an authenticated user or service identity and recorded in the audit log.
Reject-on-FailureInvalid or unauthorised inputs are rejected with a structured error response. Inputs are never silently discarded or partially committed.
IdempotencyCritical write operations support idempotency keys to prevent duplicate submission on network retry.

3. Input Sources and Control Matrix

Input SourceAuthenticationAuthorizationValidation Applied
Web UI (User)Session token (HttpOnly cookie)RBAC role/permission check per actionClient-side + server-side field validation; CSRF token required
REST API (API Key)API key in Authorization headerScope-based permission checkServer-side JSON schema validation; rate limiting applied
REST API (OAuth 2.0)OAuth 2.0 Bearer tokenOAuth scope + RBAC checkServer-side JSON schema validation; rate limiting applied
Excel / CSV ImportAuthenticated user sessionRBAC: import permission requiredFile type, size, column headers, row-level field and type validation
Webhook Inbound (CI/CD, integrations)HMAC-SHA256 signature validationPre-registered endpoint whitelist; event type whitelistPayload schema validation; unknown event types rejected
Integration Sync (Jira, ADO, etc.)OAuth token per integration configWorkspace-scoped integration configurationField mapping validation; type coercion; unmapped fields logged
Internal Admin APIService account credentials + IP allowlistService account RBACFull schema validation + business rule enforcement

4. Server-Side Validation Controls (Mandatory)

4.1 Field-Level Validation

  • Type validation: each field validated against its declared type (string, integer, boolean, date, UUID, enum).
  • Required fields: HTTP 422 Unprocessable Entity returned with field-level error detail if any required field is absent.
  • Maximum and minimum length enforced for all string fields.
  • Enum fields: only values within the defined set accepted; all others rejected with explicit error naming permitted values.
  • Format validation: dates must conform to ISO 8601; email addresses to RFC 5322 pattern; UUIDs to v4 format.

4.2 Business Rule Validation

  • Cross-field consistency rules enforced (e.g., test run end date must be after start date; referenced project must be in same workspace).
  • Referential integrity: foreign key references validated against existing records within the same workspace before commit.
  • Workspace scoping: all records can only reference entities within the same workspace; cross-workspace references rejected.

4.3 Security-Oriented Input Controls

  • SQL injection prevention: parameterised queries and ORM layer enforced for all database operations; no raw string concatenation in queries.
  • XSS prevention: all user-supplied text fields sanitised against an allowlist HTML sanitiser on output; script injection rejected.
  • CSRF protection: all state-changing web UI requests require a valid CSRF token validated server-side.
  • File upload validation: MIME type, file extension, and maximum size enforced; file content integrity checked before storage.
  • Request size limits enforced to prevent payload flooding (assumption: 10 MB max request body [VERIFY]).

5. Import File Input Controls

  • Only .xlsx and .csv file types accepted; other MIME types rejected immediately.
  • Maximum import file size enforced (assumption: 10 MB [VERIFY]).
  • Column headers validated against the expected template schema; unknown columns flagged as warnings.
  • Row-level validation: each row evaluated independently; invalid rows reported with row number and rejection reason; valid rows continue processing.
  • Import aborts if error rate exceeds threshold (assumption: >20% invalid rows [VERIFY]); full import error report provided to user.
  • Duplicate detection: records with matching unique identifiers flagged for user review before commit.

6. Error Handling and Audit

  • All rejected inputs receive a structured JSON error response: HTTP status code, error code, field name, and human-readable message.
  • Error messages are informative about the validation failure but do not expose internal system architecture, database schemas, or stack traces.
  • All input validation failures are logged with: source (UI/API/import/webhook), user/system identity, timestamp, endpoint, and error detail.
  • Repeated validation failures from the same source IP or API key trigger an automated security alert (brute-force / fuzzing detection threshold).