Loading...
Loading...
Guideline for designing, implementing, and verifying secure TypeScript and JavaScript applications following OWASP Top 10 best practices. Use when the user wants to: (1) review TypeScript or JavaScript code for security vulnerabilities, (2) design a secure Node.js, Deno, or browser application architecture, (3) implement security features (authentication, authorization, cryptography, input validation), (4) audit npm/yarn/pnpm dependencies for known vulnerabilities, (5) create security checklists or verification plans, (6) fix security bugs or harden existing TypeScript or JavaScript code, (7) set up security testing and static analysis (ESLint security plugins, Semgrep, Snyk), or (8) handle any TypeScript/JavaScript security concern including injection prevention, prototype pollution, XSS protection, SSRF prevention, secrets management, and secure deployment.
npx skill4agent add jim60105/copilot-prompt typescript-securitypostMessage| Never | Instead |
|---|---|
| |
| |
| String concatenation / template literals in SQL | Parameterized queries ( |
| |
| DOMPurify + explicit sanitization |
| |
| MD5 / SHA1 for password hashing | |
| |
| Validated schema (Zod, class-validator) + |
| Static imports with allowlisted modules |
| Hardcoded secrets in source code | Environment variables or secret manager (Vault, AWS SM) |
| Environment-specific configuration |
| Zod, io-ts, or class-validator after parsing |
| Escape user input or use a safe regex library |
| Isolated worker threads or dedicated sandbox |
Disabling TLS verification ( | Proper certificate management |
eslint-plugin-securityeslint-plugin-no-unsanitizedsemgreptypescript-eslintnpm audityarn auditpnpm auditsnyksocket.devdetect-secretsgitleaks# ESLint security plugins
npm install --save-dev eslint-plugin-security eslint-plugin-no-unsanitized
npx eslint --ext .ts,.js,.tsx,.jsx src/
# npm audit — dependency vulnerabilities
npm audit
npm audit --audit-level=high
# Snyk — comprehensive dependency and code scanning
npx snyk test
npx snyk code test
# detect-secrets — secrets scanning
detect-secrets scan > .secrets.baseline
# Semgrep — advanced pattern matching
semgrep --config=p/javascript --config=p/typescript --config=p/owasp-top-ten src/
# Socket.dev — supply chain security
npx socket npm info <package-name>package-lock.jsonyarn.lockpnpm-lock.yamlnpm auditsnyk test--ignore-scriptssocket.devnpm provenancetrivyStrict-Transport-SecurityContent-Security-PolicyX-Content-Type-Options: nosniffX-Frame-Options: DENYPermissions-Policy| # | Category | TypeScript/JavaScript-Specific Risks | Primary Mitigation |
|---|---|---|---|
| A01 | Broken Access Control | Missing auth middleware, IDOR via sequential IDs, path traversal, SSRF via | Centralized auth middleware, object-level permissions, |
| A02 | Security Misconfiguration | | Environment-specific config, disable docs in prod, centralized error handler, explicit CORS, |
| A03 | Software Supply Chain Failures | Unpinned deps, typosquatting on npm, malicious postinstall scripts, no lockfile, unvetted transitive deps, CI/CD secrets exposure | |
| A04 | Cryptographic Failures | | |
| A05 | Injection | SQL via template literals, XSS via | Parameterized queries, DOM sanitization (DOMPurify), |
| A06 | Insecure Design | No rate limiting, missing input validation layer, no abuse case modeling, client-side enforcement of server-side security | Threat modeling, validation at boundaries (Zod/class-validator), rate limiting middleware, server-side enforcement |
| A07 | Authentication Failures | Weak session config, JWT | Secure session settings, explicit |
| A08 | Software or Data Integrity Failures | Prototype pollution, | Schema validation (Zod), |
| A09 | Security Logging and Alerting Failures | Logging passwords/tokens, | Structured logging (pino/winston) with field filtering, audit trail, alerting thresholds, honeytokens |
| A10 | Mishandling of Exceptional Conditions | Unhandled promise rejections, empty | Specific error types, |
npm auditsnyk testsemgrepinnerHTMLdocument.write# === Static Analysis ===
npm install --save-dev eslint-plugin-security eslint-plugin-no-unsanitized
npx eslint --ext .ts,.js,.tsx,.jsx src/
semgrep --config=p/javascript --config=p/typescript --config=p/owasp-top-ten src/
# === Dependency Audit ===
npm audit --audit-level=high
npx snyk test
# === Secrets Detection ===
detect-secrets scan > .secrets.baseline
gitleaks detect --source .
# === Lock Dependencies ===
npm ci # install from lockfile (CI/CD)
# === Container Scanning ===
# trivy image <image-name>