用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/ersinkoc/security-check --skill sc-session命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
Comprehensive AI-powered security scanning suite with 48 skills covering OWASP Top 10, 7 language-specific deep scanners (Go, TypeScript, Python, PHP, Rust, Java, C#), supply chain analysis, infrastructure-as-code scanning, and 3000+ checklist items. Use when you need to run a security audit, find vulnerabilities, scan a PR for security issues, or perform a penetration test on a codebase.
C#/.NET-specific security deep scan
Go-specific security deep scan
基于 SOC 职业分类
正在显示 SKILL.md
| name | sc-session |
| description | Session management flaw detection — fixation, hijacking, cookie misconfiguration, and lifecycle issues |
| license | MIT |
| metadata | {"author":"ersinkoc","category":"security","version":"1.0.0"} |
Detects session management vulnerabilities including session fixation, predictable session tokens, insecure cookie attributes, missing session regeneration on privilege change, excessive session timeouts, and improper session invalidation. Covers cookie-based sessions, server-side sessions, and token-based session patterns.
Called by sc-orchestrator during Phase 2 when session management is detected.
"session", "cookie", "Set-Cookie", "httpOnly", "secure", "SameSite",
"session_start", "session_regenerate_id", "req.session",
"SESSION_COOKIE", "CSRF_COOKIE", "express-session", "cookie-session",
"maxAge", "expires", "session.save(", "session.destroy(",
"SessionCreationPolicy"
1. Missing Cookie Security Attributes:
// VULNERABLE: Session cookie without security flags
app.use(session({
secret: 'keyboard cat',
cookie: { } // No httpOnly, secure, or sameSite
}));
// SAFE: All security attributes set
app.use(session({
secret: process.env.SESSION_SECRET,
cookie: {
httpOnly: true,
secure: true,
sameSite: 'strict',
maxAge: 3600000 // 1 hour
},
resave: false,
saveUninitialized: false
}));
2. Missing Session Regeneration After Login:
# VULNERABLE: Same session ID before and after authentication
def login(request):
user = authenticate(request.POST['username'], request.POST['password'])
if user:
request.session['user_id'] = user.id # Session fixation!
return redirect('/dashboard')
# SAFE: Regenerate session after login
def login(request):
user = authenticate(request.POST['username'], request.POST['password'])
if user:
request.session.flush() # Destroy old session
request.session.cycle_key() # New session ID
request.session['user_id'] = user.id
return redirect('/dashboard')
3. Session Not Invalidated on Logout:
// VULNERABLE: Session data cleared but session ID persists
@PostMapping("/logout")
public void logout(HttpSession session) {
session.removeAttribute("user");
}
// SAFE: Invalidate entire session
@PostMapping("/logout")
public void logout(HttpSession session) {
session.invalidate();
}
4. Session Token in URL:
// VULNERABLE: Session ID in URL parameter
session_start();
echo '<a href="page.php?PHPSESSID=' . session_id() . '">Link</a>';
// SAFE: Use cookie-only sessions
ini_set('session.use_only_cookies', 1);
ini_set('session.use_trans_sid', 0);
HttpOnly: Prevents JavaScript access (XSS protection)Secure: Only sent over HTTPSSameSite: Prevents CSRF (Strict or Lax)Path: Scoped to application pathMax-Age/Expires: Reasonable session durationSESSION_COOKIE_HTTPONLY, SESSION_COOKIE_SECURE, SESSION_COOKIE_SAMESITE, SESSION_COOKIE_AGEcookie.httpOnly, cookie.secure, cookie.sameSite, cookie.maxAgesession.http_only, session.secure, session.same_site, session.lifetimeserver.servlet.session.cookie.http-only, server.servlet.session.cookie.secureCookieHttpOnly, CookieSecure, CookieSameSitesecure: false in dev config with env-specific override for productionsecure flag may be set at the reverse proxy level