/awesome-web-security
Curated lookup over qazbnm456/awesome-web-security.
Always fetches the latest index from raw.githubusercontent.com — no stale snapshot.
When to use
A user asks for resources, references, learning paths, or tools related to web
security topics: XSS, SQLi, CSRF, SSRF, XXE, OAuth/JWT, prototype pollution,
deserialization, SAML, file upload, web cache poisoning, WAF / CSP evasion,
browser exploitation, recon (subdomain enumeration, OSINT), DNS rebinding,
CTF write-ups, bug bounty methodology, defensive tooling, payload lists,
cheatsheets, or related blogs.
When NOT to use
- The user wants to attack a target they do not own and have not been
authorized to test. Decline and ask for scope: own system, CTF,
authorized pentest, academic research, or defensive analysis.
- The user is asking for malware authoring, mass scanning of unowned
infrastructure, or detection-evasion guidance for offensive purposes.
- The question has no security framing — it's general programming or
framework usage. Hand off to a non-security skill.
How
- Fetch the index with WebFetch:
https://raw.githubusercontent.com/qazbnm456/awesome-web-security/master/data/index.json
- Parse the JSON. Schema:
{
"schema_version": "1",
"categories": [{"key": "xss", "title": "...", "h_level": 3, "parent": "intro", "anchor": "xss"}],
"entries": [{
"id": "xss-google-app-security",
"url": "...",
"title": "...",
"author": {"name": "...", "url": "..."},
"category": "xss",
"type": "article|tool|cheatsheet|video|book|community|payload-list",
"languages": ["en", "zh", "jp"],
"difficulty": "intro|intermediate|advanced",
"date_added": "YYYY-MM-DD",
"archive_url": "...|null",
"last_checked": "YYYY-MM-DD|null",
"status": "active|dead|archived-only|quarantined"
}]
}
- Filter by:
category matching the user's topic (a topic may map to several
categories — for "XSS" check xss, tools-xss, tricks-xss,
practices-xss, evasions-csp as relevant).
languages: default to the user's language; fall back to en.
difficulty: include all unless the user asked for "intro" or "deep".
type: filter by what the user wants — articles, tools, cheatsheets,
payload lists, etc.
- Rank by:
- "Latest" requests →
date_added DESC.
- "Deep dive" requests → prefer
difficulty: advanced, then by depth
signals (long titles, payload-list type, presence of author URL).
- "Tools" requests →
type: tool only.
- Return 5–7 entries; for each include title, URL, archive_url fallback if
status != active, and a one-line value statement explaining what this
entry teaches.
Safety guardrails
- Refuse to assist with unauthorized targeting. Ask for scope.
- Frame all results defensively / educationally.
- For
payload-list entries, append: "Test payloads only against systems
you own or have written authorization to test."
- Do not chain entries into an attack playbook against a named real target.
Output format
For each result:
Title — author • difficulty • type
One line on what this teaches and why it matters.
(Archive fallback: archive_url) — included only when status != active.
End with:
Cited from qazbnm456/awesome-web-security. Full list and categories at the README.
Failure handling
- JSON fetch fails (network, 404, parse error) → respond:
"The awesome-web-security index is temporarily unreachable. Try again
shortly, or visit https://github.com/qazbnm456/awesome-web-security
directly." Do NOT fabricate entries.
- No matches in the requested category → say so explicitly. Offer adjacent
categories from
categories[].parent chain.
Examples
User: "I'm learning XSS, give me intermediate-level resources in English."
→ Filter category matching xss, tools-xss, tricks-xss, evasions-csp;
languages contains en; difficulty in intermediate or advanced;
rank by date_added DESC; return top 5–7.
User: "我想找最新的 SSRF 文章。"
→ Filter category matching ssrf, tricks-ssrf, tools-ssrf;
languages contains zh; rank by date_added DESC; return in Chinese.
User: "What's a good XSS payload list?"
→ Filter category: xss AND type: payload-list; rank by depth signals.
Append the unauthorized-testing reminder.
1---2name: awesome-web-security3description: Looks up curated web security learning resources (XSS, SQLi, CSRF, SSRF, OAuth/JWT, deserialization, SAML, recon, evasion, defensive tooling, CTF). Filters by topic, difficulty, language, and resource type. Returns top references with archive fallbacks. Defensive and educational use only.4---56# /awesome-web-security78Curated lookup over [qazbnm456/awesome-web-security](https://github.com/qazbnm456/awesome-web-security).9Always fetches the latest index from `raw.githubusercontent.com` — no stale snapshot.1011## When to use1213A user asks for resources, references, learning paths, or tools related to web14security topics: XSS, SQLi, CSRF, SSRF, XXE, OAuth/JWT, prototype pollution,15deserialization, SAML, file upload, web cache poisoning, WAF / CSP evasion,16browser exploitation, recon (subdomain enumeration, OSINT), DNS rebinding,17CTF write-ups, bug bounty methodology, defensive tooling, payload lists,18cheatsheets, or related blogs.1920## When NOT to use2122- The user wants to attack a target they do not own and have not been23 authorized to test. Decline and ask for scope: own system, CTF,24 authorized pentest, academic research, or defensive analysis.25- The user is asking for malware authoring, mass scanning of unowned26 infrastructure, or detection-evasion guidance for offensive purposes.27- The question has no security framing — it's general programming or28 framework usage. Hand off to a non-security skill.2930## How31321. Fetch the index with WebFetch:33 `https://raw.githubusercontent.com/qazbnm456/awesome-web-security/master/data/index.json`342. Parse the JSON. Schema:35 ```36 {37 "schema_version": "1",38 "categories": [{"key": "xss", "title": "...", "h_level": 3, "parent": "intro", "anchor": "xss"}],39 "entries": [{40 "id": "xss-google-app-security",41 "url": "...",42 "title": "...",43 "author": {"name": "...", "url": "..."},44 "category": "xss",45 "type": "article|tool|cheatsheet|video|book|community|payload-list",46 "languages": ["en", "zh", "jp"],47 "difficulty": "intro|intermediate|advanced",48 "date_added": "YYYY-MM-DD",49 "archive_url": "...|null",50 "last_checked": "YYYY-MM-DD|null",51 "status": "active|dead|archived-only|quarantined"52 }]53 }54 ```553. Filter by:56 - `category` matching the user's topic (a topic may map to several57 categories — for "XSS" check `xss`, `tools-xss`, `tricks-xss`,58 `practices-xss`, `evasions-csp` as relevant).59 - `languages`: default to the user's language; fall back to `en`.60 - `difficulty`: include all unless the user asked for "intro" or "deep".61 - `type`: filter by what the user wants — articles, tools, cheatsheets,62 payload lists, etc.634. Rank by:64 - "Latest" requests → `date_added` DESC.65 - "Deep dive" requests → prefer `difficulty: advanced`, then by depth66 signals (long titles, payload-list type, presence of author URL).67 - "Tools" requests → `type: tool` only.685. Return 5–7 entries; for each include title, URL, archive_url fallback if69 `status != active`, and a one-line value statement explaining what this70 entry teaches.7172## Safety guardrails7374- Refuse to assist with unauthorized targeting. Ask for scope.75- Frame all results defensively / educationally.76- For `payload-list` entries, append: "Test payloads only against systems77 you own or have written authorization to test."78- Do not chain entries into an attack playbook against a named real target.7980## Output format8182For each result:8384> **[Title](url)** — *author* • *difficulty* • *type*85> One line on what this teaches and why it matters.86> *(Archive fallback: archive_url)* — included only when `status != active`.8788End with:8990> Cited from [qazbnm456/awesome-web-security](https://github.com/qazbnm456/awesome-web-security). Full list and categories at the README.9192## Failure handling9394- JSON fetch fails (network, 404, parse error) → respond:95 "The awesome-web-security index is temporarily unreachable. Try again96 shortly, or visit https://github.com/qazbnm456/awesome-web-security97 directly." Do NOT fabricate entries.98- No matches in the requested category → say so explicitly. Offer adjacent99 categories from `categories[].parent` chain.100101## Examples102103User: "I'm learning XSS, give me intermediate-level resources in English."104→ Filter `category` matching `xss`, `tools-xss`, `tricks-xss`, `evasions-csp`;105 `languages` contains `en`; `difficulty` in `intermediate` or `advanced`;106 rank by `date_added` DESC; return top 5–7.107108User: "我想找最新的 SSRF 文章。"109→ Filter `category` matching `ssrf`, `tricks-ssrf`, `tools-ssrf`;110 `languages` contains `zh`; rank by `date_added` DESC; return in Chinese.111112User: "What's a good XSS payload list?"113→ Filter `category: xss` AND `type: payload-list`; rank by depth signals.114 Append the unauthorized-testing reminder.