ergosteur dba3ee1815 Defense-in-depth: neutralize raw HTML in md_to_html.py itself
The previous fix escaped AD data at generation time in both scripts,
but the converter still blindly trusted its input -- a report from
before that fix, from a hand edit, or from a third-party tool would
still render live HTML unmodified.

Normalize the whole Markdown source before parsing: unescape any
existing entities, then re-escape &, <, > uniformly. The round trip
keeps already-escaped (freshly generated) reports single-escaped
instead of doubling up, while raw/legacy unescaped HTML gets
neutralized for the first time. Neither script intentionally emits
raw HTML, so this is safe across all normal report content.

Verified: a freshly-escaped report stays single-escaped (AT&T reads
as AT&amp;T, not AT&amp;amp;T), a hand-written report with a live
<script> tag gets neutralized, and a full report with badges/TOC/
timestamps/tables still renders identically to before.
2026-08-21 17:15:11 -04:00
S
Description
Read-only Active Directory structure/health audit scripts (Python/LDAP + PowerShell/RSAT)
143 KiB
Languages
Python 67.1%
PowerShell 32.9%