File contents Security Checklist
Comprehensive security review checklist for new features and changes.
When to Use
Before shipping any feature that handles user data
When implementing authentication or authorization
When adding new API endpoints
When integrating third-party services
During code review for security-sensitive changes
Used By
Security Engineer (primary owner)
Full-Stack Engineer (implementation)
Backend Engineer (API security)
DevOps Engineer (infrastructure security)
Security Review Template
# Security Review: [Feature/Change Name]
**Reviewer**: [Name]
**Date**: [Date]
**Status**: In Progress | Approved | Needs Changes
---
## Overview
### Feature Description
[Brief description of the feature]
### Data Handled
- [ ] PII (Personal Identifiable Information)
- [ ] Financial data
- [ ] Authentication credentials
- [ ] User-generated content
- [ ] None of the above
### Risk Level
- [ ] High (handles sensitive data, authentication, payments)
- [ ] Medium (user data, API endpoints)
- [ ] Low (display only, no data mutation)
---
## Authentication & Authorization
### Authentication
- [ ] Authentication required for all protected endpoints
- [ ] Session management is secure (httpOnly, secure, sameSite)
- [ ] Token expiration is appropriate
- [ ] Logout properly invalidates session
- [ ] No authentication bypass possible
### Authorization
- [ ] Authorization checked on every request
- [ ] Users can only access their own data
- [ ] Admin functions properly protected
- [ ] Role/permission checks in place
- [ ] No IDOR (Insecure Direct Object Reference) vulnerabilities
### Multi-Factor Authentication (if applicable)
- [ ] MFA enforced for sensitive operations
- [ ] MFA bypass not possible
- [ ] Recovery codes handled securely
---
## Input Validation
### Data Validation
- [ ] All user input validated on server side
- [ ] Input type checked (string, number, etc.)
- [ ] Input length limited appropriately
- [ ] Input format validated (email, URL, etc.)
- [ ] Allowlists preferred over blocklists
### SQL Injection
- [ ] Parameterized queries used (no string concatenation)
- [ ] ORM used correctly
- [ ] Raw queries reviewed for injection
### XSS (Cross-Site Scripting)
- [ ] Output encoded for context (HTML, JS, URL, CSS)
- [ ] User content sanitized before display
- [ ] Content Security Policy configured
- [ ] No dangerous `innerHTML` or `dangerouslySetInnerHTML`
### Command Injection
- [ ] No user input passed to shell commands
- [ ] If necessary, input strictly validated
- [ ] Parameterized execution used
---
## Data Protection
### Data at Rest
- [ ] Sensitive data encrypted in database
- [ ] Encryption keys properly managed
- [ ] PII minimized (don't store what you don't need)
- [ ] Data classified and tagged
### Data in Transit
- [ ] HTTPS enforced everywhere
- [ ] TLS 1.2+ required
- [ ] HSTS enabled
- [ ] Secure cookies (httpOnly, secure, sameSite)
### Data Handling
- [ ] Sensitive data not logged
- [ ] Error messages don't expose internal details
- [ ] Data scrubbed from error reports
- [ ] Secure data deletion implemented
---
## API Security
### Endpoint Security
- [ ] Rate limiting implemented
- [ ] Request size limits set
- [ ] Timeout configured
- [ ] CORS properly configured
### Request Validation
- [ ] Schema validation on all inputs
- [ ] Unexpected fields rejected or ignored
- [ ] Content-type verified
- [ ] File upload restrictions in place
### Response Security
- [ ] Sensitive data not in responses
- [ ] Error codes don't leak information
- [ ] Consistent error format
- [ ] No stack traces in production
---
## Third-Party Security
### Dependencies
- [ ] Dependencies scanned for vulnerabilities
- [ ] Dependencies from trusted sources
- [ ] Dependencies up to date
- [ ] Lock file used (package-lock.json, etc.)
### Integrations
- [ ] Third-party credentials properly managed
- [ ] API keys not in code
- [ ] Webhook signatures verified
- [ ] Third-party responses validated
---
## Infrastructure Security
### Secrets Management
- [ ] No secrets in code
- [ ] Secrets in environment variables or secret manager
- [ ] Secrets rotated regularly
- [ ] Access to secrets logged
### Security Headers
- [ ] Content-Security-Policy
- [ ] X-Content-Type-Options: nosniff
- [ ] X-Frame-Options or CSP frame-ancestors
- [ ] Referrer-Policy
- [ ] Permissions-Policy
- [ ] Strict-Transport-Security
### Error Handling
- [ ] Generic error pages in production
- [ ] No stack traces exposed
- [ ] Errors logged server-side
- [ ] Monitoring for unusual error patterns
---
## Logging & Monitoring
### Security Logging
- [ ] Authentication attempts logged
- [ ] Authorization failures logged
- [ ] Sensitive operations logged
- [ ] Logs don't contain sensitive data
- [ ] Log integrity protected
### Monitoring
- [ ] Alerts for suspicious activity
- [ ] Failed login monitoring
- [ ] Rate limit triggers monitored
- [ ] Error rate monitoring
---
## Threat Model
### Assets
[What data/functionality are we protecting?]
### Threat Actors
- [ ] Anonymous attackers
- [ ] Authenticated users (privilege escalation)
- [ ] Malicious insiders
- [ ] Automated bots/scrapers
### Attack Vectors
| Threat | Likelihood | Impact | Mitigation |
|--------|------------|--------|------------|
| [Threat 1] | H/M/L | H/M/L | [Control] |
| [Threat 2] | H/M/L | H/M/L | [Control] |
### Residual Risks
[Risks that are accepted with justification]
---
## Findings
### Critical (Must Fix)
- [ ] [Finding 1]
- [ ] [Finding 2]
### High (Should Fix)
- [ ] [Finding 1]
- [ ] [Finding 2]
### Medium (Recommend)
- [ ] [Finding 1]
### Informational
- [Note 1]
---
## Sign-Off
| Role | Name | Date | Status |
|------|------|------|--------|
| Security | | | [ ] Approved |
| Dev Lead | | | [ ] Acknowledged |
OWASP Top 10 Quick Reference
1. Broken Access Control
Enforce access control on server
Deny by default
Verify ownership of resources
2. Cryptographic Failures
Encrypt sensitive data
Use strong algorithms
Manage keys securely
3. Injection
Use parameterized queries
Validate and sanitize input
Escape output for context
4. Insecure Design
Threat model new features
Defense in depth
Secure defaults
5. Security Misconfiguration
Disable unnecessary features
Secure default configs
Remove default credentials
6. Vulnerable Components
Scan dependencies
Keep updated
Monitor for vulnerabilities
7. Authentication Failures
Strong password requirements
Secure session management
Multi-factor authentication
8. Software/Data Integrity Failures
Verify dependencies
Sign releases
Secure CI/CD
9. Security Logging Failures
Log security events
Protect log integrity
Monitor for anomalies
10. Server-Side Request Forgery (SSRF)
Validate URLs
Use allowlists
Limit outbound requests
Quick Security Checks
Before Every PR
Before Every Release
Quarterly
1 --- 2 name: security-checklist 3 description: Security review checklist for features and changes 4 --- 5 6 # Security Checklist 7 8 Comprehensive security review checklist for new features and changes. 9 10 ## When to Use 11 12 - Before shipping any feature that handles user data 13 - When implementing authentication or authorization 14 - When adding new API endpoints 15 - When integrating third-party services 16 - During code review for security-sensitive changes 17 18 ## Used By 19 20 - Security Engineer (primary owner) 21 - Full-Stack Engineer (implementation) 22 - Backend Engineer (API security) 23 - DevOps Engineer (infrastructure security) 24 25 --- 26 27 ## Security Review Template 28 29 ```markdown 30 # Security Review: [Feature/Change Name] 31 32 **Reviewer**: [Name] 33 **Date**: [Date] 34 **Status**: In Progress | Approved | Needs Changes 35 36 --- 37 38 ## Overview 39 40 ### Feature Description 41 [Brief description of the feature] 42 43 ### Data Handled 44 - [ ] PII (Personal Identifiable Information) 45 - [ ] Financial data 46 - [ ] Authentication credentials 47 - [ ] User-generated content 48 - [ ] None of the above 49 50 ### Risk Level 51 - [ ] High (handles sensitive data, authentication, payments) 52 - [ ] Medium (user data, API endpoints) 53 - [ ] Low (display only, no data mutation) 54 55 --- 56 57 ## Authentication & Authorization 58 59 ### Authentication 60 - [ ] Authentication required for all protected endpoints 61 - [ ] Session management is secure (httpOnly, secure, sameSite) 62 - [ ] Token expiration is appropriate 63 - [ ] Logout properly invalidates session 64 - [ ] No authentication bypass possible 65 66 ### Authorization 67 - [ ] Authorization checked on every request 68 - [ ] Users can only access their own data 69 - [ ] Admin functions properly protected 70 - [ ] Role/permission checks in place 71 - [ ] No IDOR (Insecure Direct Object Reference) vulnerabilities 72 73 ### Multi-Factor Authentication (if applicable) 74 - [ ] MFA enforced for sensitive operations 75 - [ ] MFA bypass not possible 76 - [ ] Recovery codes handled securely 77 78 --- 79 80 ## Input Validation 81 82 ### Data Validation 83 - [ ] All user input validated on server side 84 - [ ] Input type checked (string, number, etc.) 85 - [ ] Input length limited appropriately 86 - [ ] Input format validated (email, URL, etc.) 87 - [ ] Allowlists preferred over blocklists 88 89 ### SQL Injection 90 - [ ] Parameterized queries used (no string concatenation) 91 - [ ] ORM used correctly 92 - [ ] Raw queries reviewed for injection 93 94 ### XSS (Cross-Site Scripting) 95 - [ ] Output encoded for context (HTML, JS, URL, CSS) 96 - [ ] User content sanitized before display 97 - [ ] Content Security Policy configured 98 - [ ] No dangerous `innerHTML` or `dangerouslySetInnerHTML` 99 100 ### Command Injection 101 - [ ] No user input passed to shell commands 102 - [ ] If necessary, input strictly validated 103 - [ ] Parameterized execution used 104 105 --- 106 107 ## Data Protection 108 109 ### Data at Rest 110 - [ ] Sensitive data encrypted in database 111 - [ ] Encryption keys properly managed 112 - [ ] PII minimized (don't store what you don't need) 113 - [ ] Data classified and tagged 114 115 ### Data in Transit 116 - [ ] HTTPS enforced everywhere 117 - [ ] TLS 1.2+ required 118 - [ ] HSTS enabled 119 - [ ] Secure cookies (httpOnly, secure, sameSite) 120 121 ### Data Handling 122 - [ ] Sensitive data not logged 123 - [ ] Error messages don't expose internal details 124 - [ ] Data scrubbed from error reports 125 - [ ] Secure data deletion implemented 126 127 --- 128 129 ## API Security 130 131 ### Endpoint Security 132 - [ ] Rate limiting implemented 133 - [ ] Request size limits set 134 - [ ] Timeout configured 135 - [ ] CORS properly configured 136 137 ### Request Validation 138 - [ ] Schema validation on all inputs 139 - [ ] Unexpected fields rejected or ignored 140 - [ ] Content-type verified 141 - [ ] File upload restrictions in place 142 143 ### Response Security 144 - [ ] Sensitive data not in responses 145 - [ ] Error codes don't leak information 146 - [ ] Consistent error format 147 - [ ] No stack traces in production 148 149 --- 150 151 ## Third-Party Security 152 153 ### Dependencies 154 - [ ] Dependencies scanned for vulnerabilities 155 - [ ] Dependencies from trusted sources 156 - [ ] Dependencies up to date 157 - [ ] Lock file used (package-lock.json, etc.) 158 159 ### Integrations 160 - [ ] Third-party credentials properly managed 161 - [ ] API keys not in code 162 - [ ] Webhook signatures verified 163 - [ ] Third-party responses validated 164 165 --- 166 167 ## Infrastructure Security 168 169 ### Secrets Management 170 - [ ] No secrets in code 171 - [ ] Secrets in environment variables or secret manager 172 - [ ] Secrets rotated regularly 173 - [ ] Access to secrets logged 174 175 ### Security Headers 176 - [ ] Content-Security-Policy 177 - [ ] X-Content-Type-Options: nosniff 178 - [ ] X-Frame-Options or CSP frame-ancestors 179 - [ ] Referrer-Policy 180 - [ ] Permissions-Policy 181 - [ ] Strict-Transport-Security 182 183 ### Error Handling 184 - [ ] Generic error pages in production 185 - [ ] No stack traces exposed 186 - [ ] Errors logged server-side 187 - [ ] Monitoring for unusual error patterns 188 189 --- 190 191 ## Logging & Monitoring 192 193 ### Security Logging 194 - [ ] Authentication attempts logged 195 - [ ] Authorization failures logged 196 - [ ] Sensitive operations logged 197 - [ ] Logs don't contain sensitive data 198 - [ ] Log integrity protected 199 200 ### Monitoring 201 - [ ] Alerts for suspicious activity 202 - [ ] Failed login monitoring 203 - [ ] Rate limit triggers monitored 204 - [ ] Error rate monitoring 205 206 --- 207 208 ## Threat Model 209 210 ### Assets 211 [What data/functionality are we protecting?] 212 213 ### Threat Actors 214 - [ ] Anonymous attackers 215 - [ ] Authenticated users (privilege escalation) 216 - [ ] Malicious insiders 217 - [ ] Automated bots/scrapers 218 219 ### Attack Vectors 220 | Threat | Likelihood | Impact | Mitigation | 221 |--------|------------|--------|------------| 222 | [Threat 1] | H/M/L | H/M/L | [Control] | 223 | [Threat 2] | H/M/L | H/M/L | [Control] | 224 225 ### Residual Risks 226 [Risks that are accepted with justification] 227 228 --- 229 230 ## Findings 231 232 ### Critical (Must Fix) 233 - [ ] [Finding 1] 234 - [ ] [Finding 2] 235 236 ### High (Should Fix) 237 - [ ] [Finding 1] 238 - [ ] [Finding 2] 239 240 ### Medium (Recommend) 241 - [ ] [Finding 1] 242 243 ### Informational 244 - [Note 1] 245 246 --- 247 248 ## Sign-Off 249 250 | Role | Name | Date | Status | 251 |------|------|------|--------| 252 | Security | | | [ ] Approved | 253 | Dev Lead | | | [ ] Acknowledged | 254 ``` 255 256 --- 257 258 ## OWASP Top 10 Quick Reference 259 260 ### 1. Broken Access Control 261 - Enforce access control on server 262 - Deny by default 263 - Verify ownership of resources 264 265 ### 2. Cryptographic Failures 266 - Encrypt sensitive data 267 - Use strong algorithms 268 - Manage keys securely 269 270 ### 3. Injection 271 - Use parameterized queries 272 - Validate and sanitize input 273 - Escape output for context 274 275 ### 4. Insecure Design 276 - Threat model new features 277 - Defense in depth 278 - Secure defaults 279 280 ### 5. Security Misconfiguration 281 - Disable unnecessary features 282 - Secure default configs 283 - Remove default credentials 284 285 ### 6. Vulnerable Components 286 - Scan dependencies 287 - Keep updated 288 - Monitor for vulnerabilities 289 290 ### 7. Authentication Failures 291 - Strong password requirements 292 - Secure session management 293 - Multi-factor authentication 294 295 ### 8. Software/Data Integrity Failures 296 - Verify dependencies 297 - Sign releases 298 - Secure CI/CD 299 300 ### 9. Security Logging Failures 301 - Log security events 302 - Protect log integrity 303 - Monitor for anomalies 304 305 ### 10. Server-Side Request Forgery (SSRF) 306 - Validate URLs 307 - Use allowlists 308 - Limit outbound requests 309 310 --- 311 312 ## Quick Security Checks 313 314 ### Before Every PR 315 - [ ] No secrets in code 316 - [ ] Input validation present 317 - [ ] Auth checks in place 318 - [ ] No obvious injection vectors 319 320 ### Before Every Release 321 - [ ] Dependency scan clean 322 - [ ] Security headers configured 323 - [ ] Authentication tested 324 - [ ] Authorization tested 325 326 ### Quarterly 327 - [ ] Full security review 328 - [ ] Penetration testing 329 - [ ] Dependency update 330 - [ ] Access review
yebot/rad-cc-plugins/tree/main/plugins/webapp-team/skills/security-checklist commit cebb5c12db
Frequently asked questions How do I install the Security Checklist skill? Run npx skillmds@latest add yebot/security-checklist in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
What does the Security Checklist skill do? Security review checklist for features and changes It is listed under Security on SkillMD.
Is Security Checklist safe to use? This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
Which AI agents work with Security Checklist? This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Is Security Checklist free to use? Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
Who published Security Checklist? yebot (@yebot) published this skill. Their other Agent Skills are listed on their SkillMD profile.