用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/ersinkoc/security-check --skill sc-websocket命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | sc-websocket |
| description | WebSocket security flaw detection — missing origin validation, authentication bypass, and message injection |
| license | MIT |
| metadata | {"author":"ersinkoc","category":"security","version":"1.0.0"} |
Detects WebSocket security vulnerabilities including missing origin validation, missing authentication on WebSocket upgrade, cross-site WebSocket hijacking, message injection, missing rate limiting, and sensitive data over unencrypted connections. Covers Socket.IO, ws, gorilla/websocket, and SignalR.
Called by sc-orchestrator during Phase 2 when WebSocket usage is detected.
"WebSocket", "ws://", "wss://", "socket.io", "Socket(",
"io.connect(", "gorilla/websocket", "Upgrader",
"ws.Server", "WebSocketServer", "SignalR", "Hub",
"onmessage", "on('message'", "on('connection'"
1. Missing Origin Validation:
// VULNERABLE: Accept any origin
var upgrader = websocket.Upgrader{
CheckOrigin: func(r *http.Request) bool {
return true // Accepts connections from any origin!
},
}
// SAFE: Validate origin
var upgrader = websocket.Upgrader{
CheckOrigin: func(r *http.Request) bool {
origin := r.Header.Get("Origin")
return origin == "https://app.example.com"
},
}
2. Missing Authentication:
// VULNERABLE: No auth check on WebSocket connection
wss.on('connection', (ws, req) => {
ws.on('message', (msg) => { handleMessage(msg); });
});
// SAFE: Verify auth on connection
wss.on('connection', (ws, req) => {
const token = req.url.split('token=')[1];
if (!verifyToken(token)) { ws.close(1008, 'Unauthorized'); return; }
ws.on('message', (msg) => { handleMessage(msg); });
});
3. Missing Message Validation:
// VULNERABLE: Trusting WebSocket message content
ws.on('message', (msg) => {
const data = JSON.parse(msg);
db.query(`SELECT * FROM ${data.table}`); // Injection!
});