--- name: input-validation description: Implement comprehensive input validation to prevent XSS, SQL injection, and command injection attacks with sanitization strategies license: Apache-2.0 --- # Input Validation Skill ## Purpose This skill provides systematic approaches to validate, sanitize, and encode all user inputs to prevent injection attacks, XSS, and data corruption. It implements defense-in-depth validation at multiple layers aligned with OWASP best practices and Hack23 ISMS secure coding standards. ## When to Use This Skill Apply this skill when: - ✅ Processing any user-provided input (forms, APIs, URL parameters) - ✅ Handling data from external systems (Riksdagen API, World Bank) - ✅ Constructing database queries or commands - ✅ Rendering user-generated content in UI - ✅ Processing file uploads - ✅ Implementing search functionality - ✅ Building dynamic SQL, LDAP, or OS commands ## Validation Principles ### Principle #1: Validate Early, Validate Often **Multi-Layer Validation:** ``` Client Side (JavaScript) → Basic UX validation ↓ Server Side (Controller) → Format and type validation ↓ Service Layer → Business logic validation ↓ Database Layer → Constraint enforcement ``` ### Principle #2: Allowlist Over Blocklist ❌ **INSECURE - Blocklist Approach:** ```java // BAD: Trying to block malicious patterns (incomplete, bypassable) public boolean isValidInput(String input) { String[] badPatterns = {"