--- id: AIDotNet/MoYuCode/security-scanner version: "7c97e481" license: MIT install: manual updated: 2026-01-28 --- # security-scanner — This skill scans your code for security vulnerabilities and provides actionable remediation guidance. It helps development teams quickly identify and address potential risks before they reach production, streamlining the security review process. Publisher: AIDotNet · Stars: 84 · Updated: 2026-01-28 Install (manual): `git clone https://github.com/AIDotNet/MoYuCode` ## SKILL.md # Security Scanner Skill ## Description Perform security-focused code analysis to identify vulnerabilities and security issues. ## Trigger - `/security` command - User requests security review - User asks about vulnerabilities ## Prompt You are a security expert that identifies vulnerabilities and recommends fixes. ### SQL Injection Prevention ```typescript // ❌ VULNERABLE: SQL Injection const query = `SELECT * FROM users WHERE email = '${email}'`; // ✅ SAFE: Parameterized query const query = 'SELECT * FROM users WHERE email = $1'; const result = await db.query(query, [email]); // ✅ SAFE: Using ORM const user = await prisma.user.findUnique({ where: { email } }); ``` ### XSS Prevention ```typescript // ❌ VULNERABLE: XSS in React (rare but possible)
// ✅ SAFE: Sanitize HTML import DOMPurify from 'dompurify';
// ✅ SAFE: Use text content (React auto-escapes)
{userInput}
``` ### Authentication Security ```typescript // ❌ BAD: Weak password hashing const hash = crypto.createHash('md5').update(password).digest('hex'); // ✅ GOOD: Strong password hashing import bcrypt from 'bcrypt'; const hash = await bcrypt.hash(password, 12); const isValid = await bcrypt.compare(password, hash); // ✅ GOOD: JWT with proper configuration import jwt from 'jsonwebtoken'; const token = jwt.sign( { userId: user.id }, process.env.JWT_SECRET!, { expiresIn: '1h', algorithm: 'HS256' } ); ``` ### Secret Detection Patterns ```typescript // ❌ DETECTED: Hardcoded secrets const API_KEY = 'sk-1234567890abcdef'; const password = 'admin123'; const awsSecret = 'AKIAIOSFODNN7EXAMPLE'; // ✅ SAFE: Environment variables const API_KEY = process.env.API_KEY; const password = process.env.DB_PASSWORD; ``` ### Security Headers (Express) ```typescript import helmet from 'helmet'; app.use(helmet({ contentSecurityPolicy: { directives: { defaultSrc: ["'self'"], scriptSrc: ["'self'", "'unsafe-inline'"], styleSrc: ["'self'", "'unsafe-inline'"], imgSrc: ["'self'", "data:", "https:"], }, }, hsts: { maxAge: 31536000, includeSubDomains: true }, noSniff: true, referrerPolicy: { policy: 'strict-origin-when-cross-origin' }, })); // CORS configuration app.use(cors({ origin: ['https://myapp.com'], credentials: true, methods: ['GET', 'POST', 'PUT', 'DELETE'], })); ``` ### Input Validation ```typescript import { z } from 'zod'; const CreateUserSchema = z.object({ email: z.string().email().max(255), password: z.string().min(8).max(100), name: z.string().min(1).max(100).regex(/^[a-zA-Z\s]+$/), }); // Validate input const validated = CreateUserSchema.parse(req.body); ``` ## Tags `security`, `vulnerability`, `owasp`, `scanning`, `compliance` ## Compatibility - Codex: ✅ - Claude Code: ✅ [View on SkillFed](https://skillfed.io/AIDotNet/MoYuCode/security-scanner) · [View on GitHub](https://github.com/AIDotNet/MoYuCode)