security-and-hardening

Hardens web application code against OWASP vulnerabilities, SSRF, supply-chain risks, and LLM threats.

Updated Sep 5, 2026
One-click install
npx skills add https://github.com/nntoan/ultra-omp --skill security-and-hardening-nntoan
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: security-and-hardening
Source: https://github.com/nntoan/ultra-omp/tree/main/packages/proflow/skills/security-and-hardening
Command: npx skills add https://github.com/nntoan/ultra-omp --skill security-and-hardening-nntoan

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Applications that accept user input, manage sessions, or integrate external services ship with exploitable vulnerabilities when security is treated as an afterthought. This Skill enforces threat modeling, input validation, and defense-in-depth controls on every feature that touches untrusted data. ## Core Features & Use Cases - Threat Modeling with STRIDE: Map trust boundaries, name assets, and run STRIDE analysis before writing code to prevent insecure design (OWASP A04). - OWASP Prevention Patterns: Concrete TypeScript examples for injection, broken authentication, XSS, broken access control, SSRF, and security misconfiguration using zod, bcrypt, helmet, and DOMPurify. - Supply-Chain & Dependency Auditing: Decision tree for triaging package-manager audit findings by severity and reachability, plus lockfile and install-script hygiene. - LLM Security Controls: Guardrails for prompt injection, untrusted model output, excessive agency, and RAG tenant isolation based on the OWASP LLM Top 10. - Use Case: When adding a webhook endpoint that fetches user-supplied URLs, apply the SSRF allowlist pattern with DNS resolution checks to block access to cloud metadata endpoints like 169.254.169.254. ## Quick Start Ask the AI to review your new API endpoint for security issues using the security-and-hardening checklist before merging.

Frequently Asked Questions about security-and-hardening

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I prevent SQL injection in Node.js applications?▼

Prevent SQL injection by using parameterized queries instead of string concatenation, such as db.query('SELECT * FROM users WHERE id = $1', [userId]). ORMs like Prisma also parameterize inputs automatically when used correctly.

How do I prevent SSRF when fetching user-supplied URLs?▼

Prevent SSRF by allowlisting schemes and hosts, resolving all DNS records and rejecting any private or reserved IP range, and disabling redirects. Note the TOCTOU gap: for high-risk surfaces, pin the resolved IP or use a filtering agent like request-filtering-agent.

How should I triage npm audit vulnerability reports?▼

Triage audit findings by severity and reachability: fix reachable critical or high issues immediately, schedule moderate fixes for the next release, and track low-severity items. Never run npm audit fix --force blindly; review changelogs and test each upgrade.

Does express-rate-limit work behind a load balancer?▼

No, express-rate-limit uses in-memory counters by default, so each instance counts separately and the effective limit multiplies by instance count. Use a shared store like Redis via rate-limit-redis or an HTTP-based limiter such as @upstash/ratelimit.

How do I secure LLM output in my application?▼

Treat all LLM output as untrusted input: never pass it to eval, SQL, shells, or innerHTML. Parse it defensively with JSON.parse and schema validation, then encode it before rendering, and keep secrets and other users' data out of the prompt context.

What should I do if a secret is committed to git?▼

Rotate the secret immediately by revoking and reissuing the key, because deleting the line or rewriting history is not enough once it reaches a remote. Assume the credential is compromised the moment it is pushed.