# frontend-security > 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. - Author: Schalk Neethling - Repository: schalkneethling/webdev-agent-skills - Version: 20260105204523 - Stars: 1 - Forks: 0 - Last Updated: 2026-02-06 - Source: https://github.com/schalkneethling/webdev-agent-skills - Web: https://mule.run/skillshub/@@schalkneethling/webdev-agent-skills~frontend-security:20260105204523 --- --- 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 "