security-scanner

Security Scanner Skill

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "security-scanner" with this command: npx skills add aidotnet/moyucode/aidotnet-moyucode-security-scanner

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

// ❌ 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

// ❌ VULNERABLE: XSS in React (rare but possible) <div dangerouslySetInnerHTML={{ __html: userInput }} />

// ✅ SAFE: Sanitize HTML import DOMPurify from 'dompurify'; <div dangerouslySetInnerHTML={{ __html: DOMPurify.sanitize(userInput) }} />

// ✅ SAFE: Use text content (React auto-escapes) <div>{userInput}</div>

Authentication Security

// ❌ 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

// ❌ 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)

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

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: ✅

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

bilibili-analyzer

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

puppeteer

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

cron-scheduler

No summary provided by upstream source.

Repository SourceNeeds Review