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 (&lt;...). 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:
parent
79a2cc896e
commit
f1a1ca9c7b
@ -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):
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user