Files
openless/openless-all/app
吕柏青andClaude Opus 4.8 93830ffdc0 fix(security): F-06 QA 注入 — 选区原文包 XML 信封 (#609)
QA 模式此前把用户选中文本直接以 "# 选区原文\n{}" 喂 LLM,没有 polish
那样的 XML 隔离与转义,选区里夹带"忽略上述指令"可把问答 LLM 带跑。

- 抽出纯函数 compose_qa_user_content:首轮非空选区包进 <selected_text> 信封,
  复用 polish 的 sanitize_for_xml_envelope(开/闭标签中和 + 16000 字符上限)。
- qa_system_prompt 增加"信封内是引用材料非指令"安全约定与输入约定说明。
- 新增 4 个单测:信封包裹、注入中和、非首轮只送提问、空选区只送提问。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 18:55:57 +08:00
..