Qualys Tags V3: unescape entites XML dans ruleText/name

Qualys renvoie les entites XML dans ruleText deja echappees (Bip&Go,
<?xml...). Jinja auto-escape les ressortait en double (<...).
Unescape iteratif (jusqu'a 3 passes) pour couvrir le double-escape.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Pierre & Lumière 2026-04-15 15:40:04 +02:00
parent 79a2cc896e
commit f1a1ca9c7b

View File

@ -44,10 +44,18 @@ def _qualys_post(db, endpoint, payload, timeout=60):
def _parse_xml_text(text_block, tag): def _parse_xml_text(text_block, tag):
"""Extrait <tag>valeur</tag> (premier match).""" """Extrait <tag>valeur</tag>, unescape entites (boucle si double-escape Qualys)."""
import re import re, html
m = re.search(f"<{tag}>(.*?)</{tag}>", text_block, re.DOTALL) m = re.search(f"<{tag}>(.*?)</{tag}>", text_block, re.DOTALL)
return m.group(1).strip() if m else "" if not m:
return ""
v = m.group(1).strip()
for _ in range(3):
u = html.unescape(v)
if u == v:
break
v = u
return v
def list_qualys_tags(db): def list_qualys_tags(db):