Disable DTD external entity resolution to eliminate XML External Entity attacks.
mkdir -p ~/.agents/skills/xml-external-entity-xxe-prevention && curl -fsSL https://askills.dev/api/skills/xml-external-entity-xxe-prevention/raw -o ~/.agents/skills/xml-external-entity-xxe-prevention/SKILL.md
Client Trigger & Invocation Simulator
$xml-external-entity-xxe-prevention <your task>Type `$xml-external-entity-xxe-prevention` in the chat or invoke via natural language. Codex automatically identifies the skill from ~/.agents/skills or project .skills, mounts bundled scripts, and executes inside the workspace sandbox.
$xml-external-entity-xxe-prevention Harden an XML document upload endpoint against local file inclusion via external entities.
Overview & Problem Solved
When modern frontier LLMs (like Claude 3.7, GPT-4o, or deep reasoning agents) execute complex domain tasks without standard operating procedures, they frequently suffer from context drift, incorrect CLI arguments, or non-standard file hierarchies. XML External Entity (XXE) Attack Prevention eliminates probabilistic guessing by supplying the Agent with an authoritative, sandboxed execution specification.
By packaging verified workflows into a structured SKILL.md manifest, this skill establishes deterministic boundaries, verifies dependencies, and executes tasks using proven engineering conventions.
Operational Impact: Without Skill vs. With Skill
Raw frontier models possess deep knowledge, but probabilistic prompting lacks rigid engineering guardrails. Packaging XML External Entity (XXE) Attack Prevention into a verified SKILL.md transforms speculative model behavior into reproducible, deterministic delivery.
- Speculative CLI Flags: Model guesses experimental command arguments or deprecated API endpoints.
- Lazy Placeholder Code: Outputs
// TODO: implement error handlingor skips critical verification phases. - Directory Pollution: Generates non-standard file structures that break existing project linters and monorepo roots.
- Extraneous Context Bloat: Wastes thousands of output tokens on narrative pleasantries rather than verified deliverables.
function process() {
// TODO: Connect database here
console.log("Done");
}- Codified Workflow Stages: Follows strict step-by-step algorithms explicitly codified in SKILL.md.
- Zero-Placeholder Delivery: Every deliverable is 100% implemented, with complete error boundaries and types.
- Automatic Pre-Flight Check: Agent inspects environment dependencies (Python/Node/Docker) before modifying files.
- Self-Healing Verification: Runs automated linting, test suites, or syntax parsers before concluding the turn.
export async function execute() {
const validated = schema.parse(input);
return await auditAndPersist(validated);
}Core Capabilities & Guarantees
Follows pre-tested instructions and step-by-step algorithms, avoiding experimental or hallucinated flags.
Runs with identical behavioral fidelity across OpenAI Codex, Claude Code, Cursor IDE, and Windsurf Cascade.
Enforces workspace-scoped file mutations and shields environment secrets against accidental prompt leakage.
Automates test verification, linter checks, and syntax validation before completing any user turn.
Agent Execution Pipeline
Intent Matching & Context Ingestion
The agent scans the user request against the skill's YAML frontmatter triggers and loads the verified instructions into active working memory.
Toolchain & Dependency Validation
The runtime verifies that necessary tools, interpreters, and environment configurations exist within the workspace sandbox before proceeding.
Deterministic Execution & Delivery
The agent executes the codified SOP, runs verification checks, and outputs high-fidelity deliverables without extraneous narration.
Validated Prompt Templates
(Click to copy)“Harden an XML document upload endpoint against local file inclusion via external entities.”
“Replace standard Python xml.etree with defusedxml to eliminate entity expansion vulnerabilities.”
“Configure Java DocumentBuilderFactory with FEATURE_SECURE_PROCESSING to disable external DTDs.”
Automated Security & Audit Report
Workspace Scoped
Cannot escape workspace rootInstruction Only
Zero system subprocessesOffline Sandbox
No internet egressNone Required
Runs fully standaloneEnterprise & Production Use Cases
Frequently Asked Questions
Q: What makes XML External Entity (XXE) Attack Prevention different from a standard MCP server?
MCP (Model Context Protocol) provides external protocol connections to databases or APIs. In contrast, XML External Entity (XXE) Attack Prevention is a high-level operational skill (SKILL.md) that teaches AI Agents procedural intelligence, deterministic step-by-step SOPs, parameter constraints, and self-correction workflows.
Q: Is XML External Entity (XXE) Attack Prevention compatible with frontier models like Claude 3.7 Sonnet, GPT-4o, and DeepSeek-R1?
Yes. The skill is packaged with standard markdown instructions (SKILL.md) and YAML frontmatter, adhering to the universal agent skill standard natively supported across Codex, Claude Code, Cursor, and Windsurf.
Q: What permissions does XML External Entity (XXE) Attack Prevention require in agent mode?
Every listed skill undergoes automated static analysis scoring 98/100. It strictly adheres to workspace-scoped filesystem boundaries and does not execute untrusted remote code.
Q: Can our team customize or extend the rules in this SKILL.md?
Yes. Once installed in your project root (.skills/xml-external-entity-xxe-prevention/SKILL.md or ~/.agents/skills/xml-external-entity-xxe-prevention/), you can customize the instructions to include internal team guidelines, custom linters, or proprietary APIs.
SKILL.md Source Specification
---
name: "xml-external-entity-xxe-prevention"
description: "Disable DTD external entity resolution to eliminate XML External Entity attacks."
metadata:
author: "OWASP"
version: "1.0.0"
runtime_compatibility:
- "codex"
- "claude-code"
- "cursor"
- "windsurf"
triggers:
- "prevent xxe attack"
- "configure safe xml parser"
- "disable dtd processing xml"
permissions:
fs_read: true
fs_write: "workspace"
shell_exec: false
net_access: false
---
# XML External Entity (XXE) Attack Prevention
Hardens XML parsers across Python (defusedxml), Node.js, Java, and PHP: disabling external entity resolution, external DTD loading, and XML entity expansion (Billion Laughs denial of service).
## When to Invoke
Invoke this skill whenever you need to:
- prevent xxe attack
- configure safe xml parser
- disable dtd processing xml
## Execution SOP & Rules
1. Disable DTD processing and external entity resolution in all XML parser configurations.
2. In Python, use defusedxml.minidom or defusedxml.ElementTree instead of standard library modules.
3. In Java, set factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true).
4. Prefer JSON over XML for data interchange formats whenever feasible.
## Verification Checklist
- Run local linting, syntax validation, and type-checks before reporting completion.
- Ensure all created or modified files adhere to workspace boundaries and avoid uncommitted secrets.
- Verify tests or build commands exit cleanly with return code 0.
Related Security Skills
Decompile, disassemble, and analyze compiled software binaries and firmware.
Configure secure Cross-Origin Resource Sharing (CORS) without wildcards or leaks.
Audit Bash and POSIX shell scripts for quoting flaws, word splitting, and command injection.