Individual skill
websocket-security
Securing the WebSocket upgrade and the frames after it: Origin validation against Cross-Site WebSocket Hijacking, authenticating the handshake rather than the first message, the ticket pattern for browsers that cannot set headers, per-frame authorization, and resource limits on a connection that stays open. Use when generating a WebSocket, Socket.IO, SignalR, or Phoenix Channels server, wiring real-time messaging, presence, or collaborative editing, or reviewing a /ws endpoint.
skills/websocket-security/SKILL.md
Source commit eaba88102d91df65a9aa6397e8507c315c018f5e
What was checked
- Matches the observed repository HEAD
- Yes
- Scanner rules are current
- No
- Repository scan complete
- No
- Skill scan complete
- No
- Observed behavior
- Not checked yet
- Last checked
- Nov 6, 2026
These are observations at the recorded commit, not a guarantee of safety. Review the source before running it.
Install this skill
Choose an agent in your Stack or copy a command below. Commands fetch the pinned commit and copy only this skill directory. Existing destinations are refused. Copying a command does not install anything.
Standard SKILL.md format has not been attested at this commit. No installation command is available; inspect the source.
Repository context
- Repository stars (not skill ratings)
- 23
- Repository last updated
- Aug 14, 2026
- License
- MIT
Observed agent integration: No specific integration evidence. Standard SKILL.md installation does not imply verified compatibility.
- claude-skills Repository topic
- llm Repository topic
- security Repository topic
- skills Repository topic
- writing Derived category
Files and excerpt
File metadata and permitted, redacted excerpts come from the recorded scan. Source links are pinned to that commit.
Browse files
SKILL.mdcore · 9,051 bytesSKILL.mdcore · 9,051 bytesSKILL.mdcore · 9,051 bytesSKILL.mdcore · 9,051 bytesSKILL.mdcore · 9,051 bytesreferences/limits-and-handshake.mddoc · 6,048 bytesreferences/verifying-findings.mddoc · 3,655 bytesrules/websocket_hardening.jsonasset · 3,521 bytestests/corpus.jsonasset · 5,626 bytes
Read excerpt
# WebSocket Security
## Rules (for AI agents)
### ALWAYS
- Validate the **`Origin` header** on the upgrade handshake against an allowlist, and
understand precisely what that buys: the browser sets `Origin` and script cannot
forge it, so the check stops **Cross-Site WebSocket Hijacking** — a page on
`attacker.com` opening `wss://api.example.com/ws` and inheriting the user's cookies.
It buys nothing against a non-browser client, which sets any header it likes. Origin
is a CSRF control, not authentication. The same-origin policy and CORS preflight do
not apply to the upgrade at all, which is why this check must be written by hand.
- Authenticate the **handshake**, not the first frame. Once the upgrade completes the
connection exists, has consumed the user's cookie context, and is already a resource