Open redirects enable phishing, OAuth/OIDC code and token theft, and allowlist bypass in server-side fetchers that follow redirects. Treat every redirect target as untrusted: canonicalize and enforce exact allowlists per scheme, host, and path.
Produce a minimal URL that navigates to an external domain via the vulnerable surface; include the full address bar capture
Show bypass of the stated validation (regex/allowlist) using canonicalization variants
Test multi-hop: prove only first hop is validated and second hop escapes constraints
For OAuth/SAML, demonstrate code/RelayState delivery to an attacker-controlled endpoint
False Positives
Redirects constrained to relative same-origin paths with robust normalization
Exact pre-registered OAuth redirect_uri with strict verifier
Validators using a single canonical parser and comparing post-IDNA host and scheme
User prompts that show the exact final destination before navigating
Impact
Credential and token theft via phishing and OAuth/OIDC interception
Internal data exposure when server fetchers follow redirects
Policy bypass where allowlists are enforced only on the first hop
Cross-application trust erosion and brand abuse
Pro Tips
Always compare server-side canonicalization to real browser navigation; differences reveal bypasses
Try userinfo, protocol-relative, Unicode/IDN, and IP numeric variants early
In OAuth, prioritize post_logout_redirect_uri and less-discussed flows; they're often looser
Exercise multi-hop across distinct subdomains and paths
For SSRF chaining, target services known to follow redirects
Favor allowlists of exact origins plus optional path prefixes
Keep a curated suite of redirect payloads per runtime (Java, Node, Python, Go)
Summary
Redirection is safe only when the final destination is constrained after canonicalization. Enforce exact origins, verify per hop, and treat client-provided destinations as untrusted across every stack.
How to use it
Copy the folder
Take asdfgh1445/strix•开放重定向 from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
Check the name does not clash
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.