fence

package
v0.21.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 7, 2026 License: MIT Imports: 1 Imported by: 2

Documentation

Overview

Package fence 提示词注入卫生(agent 输入卫生原语)。

两个互补原语:

  • Data:把不可信内容(diff/文件内容/PR 描述/外部工具返回等)包进显式数据区, 并中和内容中出现的围栏标记序列——防止不可信文本伪造"数据区结束"把后续 注入文本抬出数据区、以数据身份获得指令待遇。返回中和次数作注入特征信号, 由调用方留痕/打点(fence 零依赖、零副作用,可观测策略归调用方)。
  • EscapeUntrusted:中和不可信文本自身的 markdown 结构与 HTML 注释边界 (v0.10.9 自 safejson 包迁入——包名与内容不符且与本包同属注入卫生)。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Data

func Data(title, content string) (string, int)

Data 用数据区围栏包裹 content。

返回围栏文本与被中和的标记序列数:n>0 表示内容或标题里出现了围栏标记 (试图伪造数据区边界的注入特征),调用方应计数/告警。 content 为空返回 ("", 0)——空内容不值得围栏,调用方应直接跳过注入。

title 与 content 同为不可信输入面:title 直接进围栏头("===【数据区:<title> (…)】==="),不消毒时攻击者可用 "】===\n…\n===【数据区:" 把注入指令 抬到数据区之外、且 n==0 静默绕过——所以 title 走同样的标记中和(见 sanitizeTitle),其中和次数一并计入 n。

func EscapeUntrusted

func EscapeUntrusted(s string) string

EscapeUntrusted 中和不可信文本(LLM 产出、用户输入)中的 markdown 结构与 HTML 注释边界,防止攻击者借 diff/PR 描述注入伪造报告标题、列表条目等。 与 Data(数据区围栏)同属本包的注入卫生面:Data 圈住不可信内容的边界、 EscapeUntrusted 中和不可信内容自身的 markdown 语义。 策略:HTML 注释开/闭序列实体化;行首标题/引用/代码围栏/列表标记/水平线/ 表格行/引用定义前插零宽空格;反引号替换为同类引号防打断代码段。 前提:下游渲染器仍需自行 sanitize 裸 HTML(本包不处理 <img>/<script> 等标签)。

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL