mcpField
I
input-validation-sanitization-auditor

input-validation-sanitization-auditor

github.com/patricio0312revSecurity63276 installsUpdated 41w ago
Repository

About input-validation-sanitization-auditor

A skill for developers auditing input handling to reduce injection risks. It covers XSS and SQL injection prevention, validation schemas, and a security checklist.

Key features

  1. 01XSS escaping and prevention
  2. 02Parameterized SQL queries
  3. 03Input validation schemas
  4. 04Output encoding and sanitization
  5. 05Security testing checklist

Use cases

  1. 01Review HTML output in a search page
  2. 02Check database queries for concatenated input
  3. 03Define validation rules for request data

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/patricio0312rev/skills --skill input-validation-sanitization-auditor

After installing, type/input-validation-sanitization-auditorin Claude Code to confirm it loaded.

Details

From the project README

Input Validation & Sanitization Auditor

Prevent injection attacks through proper input handling.

XSS Prevention

// ❌ DANGEROUS: Direct HTML injection
app.get("/search", (req, res) => {
  res.send(`<h1>Results for: ${req.query.q}</h1>`); // XSS!
});

// ✅ SAFE: Properly escaped
import { escape } from "html-escaper";

app.get("/search", (req, res) => {
  res.send(`<h1>Results for: ${escape(req.query.q)}</h1>`);
});

// ✅ BETTER: Template engine with auto-escaping
res.render("search", { query: req.query.q }); // EJS/Pug escape by default

SQL Injection Prevention

// ❌ DANGEROUS: String concatenation
const userId = req.params.id;
const query = `SELECT * FROM users WHERE id = '${userId}'`; // SQL Injection!
db.query(query);

// ✅ SAFE: Parameterized queries
db.query("SELECT * FROM users WHERE id = $1", [userId]);

// ✅ BEST: ORM (Prisma)
await prisma.user.findUnique({ where: { id: userId } });

Input Validation Schema

import { z } from "zod";

const userSchema = z.object({
  email: z.string().email().max(255),
  password: z.string().min(12).max(128),
  age: z.number().int().min(13).max(120),
  website: z.string().url().optional(),
});

app.post("/register", async (req, res) => {
  try {
    const validated = userSchema.parse(req.body);
    await createUser(validated);
    res.json({ success: true });
  } catch (error) {
    res.status(400).json({ error: error.errors });
  }
});

Output Checklist

  • XSS prevention (escaping, CSP)
  • SQL injection prevention (parameterized queries)
  • Command injection prevention
  • Input validation schemas
  • Output encoding
  • Sanitization libraries
  • Security tests ENDFILE

Comments

Markdown supported