--- name: frontend-security description: Audit frontend codebases for security vulnerabilities and bad practices. Use when performing security reviews, auditing code for XSS/CSRF/DOM vulnerabilities, checking Content Security Policy configurations, validating input handling, reviewing file upload security, or examining Node.js/NPM dependencies. Target frameworks include web platform (vanilla HTML/CSS/JS), React, Astro, Twig templates, Node.js, and Bun. Based on OWASP security guidelines. --- # Frontend Security Audit Skill Perform comprehensive security audits of frontend codebases to identify vulnerabilities, bad practices, and missing protections. ## Audit Process 1. **Scan for dangerous patterns** - Search codebase for known vulnerability indicators 2. **Review framework-specific risks** - Check for framework security bypass patterns 3. **Validate defensive measures** - Verify CSP, CSRF tokens, input validation 4. **Check dependencies** - Review npm/node dependencies for vulnerabilities 5. **Report findings** - Categorize by severity with remediation guidance ## Critical Vulnerability Patterns to Search ### XSS Indicators (Search Priority: HIGH) ```bash # React dangerous patterns grep -rn "dangerouslySetInnerHTML" --include="*.jsx" --include="*.tsx" --include="*.js" # Direct DOM manipulation grep -rn "\.innerHTML\s*=" --include="*.js" --include="*.ts" --include="*.jsx" --include="*.tsx" grep -rn "\.outerHTML\s*=" --include="*.js" --include="*.ts" grep -rn "document\.write" --include="*.js" --include="*.ts" # URL-based injection grep -rn "location\.href\s*=" --include="*.js" --include="*.ts" grep -rn "location\.replace" --include="*.js" --include="*.ts" grep -rn "window\.open" --include="*.js" --include="*.ts" # Eval and code execution grep -rn "eval\s*(" --include="*.js" --include="*.ts" grep -rn "new Function\s*(" --include="*.js" --include="*.ts" grep -rn "setTimeout\s*(\s*['\"]" --include="*.js" --include="*.ts" grep -rn "setInterval\s*(\s*['\"]" --include="*.js" --include="*.ts" # Twig unescaped output grep -rn "|raw" --include="*.twig" --include="*.html.twig" grep -rn "{% autoescape false %}" --include="*.twig" ``` ### CSRF Indicators ```bash # Forms without CSRF tokens grep -rn "