WAF AI应用防护功能通过创建防护规则,有效拦截恶意提示词攻击并实时管控用户输入及模型生成内容中的违法违规信息,为AI应用提供全面的安全与合规保障。
创建防护模板
在创建防护模板前,需要先开通AI应用防护服务并新建资产。
登录Web应用防火墙3.0控制台。在顶部菜单栏,选择WAF实例的资源组和地域(中国内地、非中国内地),在左侧导航栏,选择。然后在规则模板页签,单击新建模板。
在模板名称区域,为该模板设置一个名称。
在请求检测模版与响应检测模版区域选择AI安全护栏已存在的检测项Service,可以单击右侧的
图标,前往AI安全护栏控制台进行检测项配置,具体操作,请参见检测项配置。在分片配置区域设置请求分片大小与响应分片大小,该参数决定了单次发送至AI安全护栏进行风险检测的文本长度。
性能与成本权衡:增大分片大小可减少AI安全护栏的调用次数,从而降低使用成本;但相应地,客户端接收完整响应的延迟也会随之增加。
计算示例:若客户端发送500字节内容且分片大小设置为300字节,系统将按每300字节为一组进行切分,共计触发2次AI安全护栏检测。
语义完整性保障:系统已内置防切分机制,可确保风险文本的语义完整性不受分片处理的影响。
在规则配置区域,单击新建规则并根据防护维度完成如下配置项。支持新建多条规则
内容合规检测:对用户输入(Prompt)及模型生成内容(Response)中的色情、涉政、违禁等违法违规信息进行检测与处置。
提示词攻击检测:识别并处置用户输入中植入的特定指令,防止攻击者绕过或操纵大语言模型的安全与道德约束,进而执行非预期任务。
黑名单词库:在AI安全护栏中配置黑名单词库,WAF将依据该词库对匹配的关键词执行相应的处置策略。
内容合规检测
规则名称:填写一个便于识别的规则名称。
防护维度:选择内容合规检测。
检测分类:支持多选以下检测风险类型:色情、涉政、恐暴、违禁及不良。
如需进行细粒度配置(例如在“色情内容检测”检测中排除疑似性知识科普与疑似性生理知识),请前往AI安全护栏进行设置。请参见规则管理。
生效等级:设置威胁等级,可选项:高风险、中风险、低风险。
检测请求与检测响应:对其进行勾选,表示WAF检测用户请求或AI模型响应。支持单独或同时配置。
检测请求
勾选此项后,表示检测用户请求。请继续选择需执行的防护动作。可选项:
观察:表示不拦截命中规则的请求,仅通过日志记录请求命中了规则。可以在日志查询中查看命中当前规则的请求,分析规则的防护效果(例如,是否有误拦截等)。
应答替换:表示命中规则的攻击请求,WAF将原始请求转发至后端大模型,并以用户配置的自定义应答内容替换大模型的真实响应。仅需配置具体的响应文案,无需适配大模型的响应格式。例如,可配置响应文案为:“请求存在不合法内容,已被WAF防护”。
拦截:表示命中规则的攻击流量被WAF拦截,不转发到后端大模型。支持选择自定义响应页面,可参考如下示例。
示例1:不适配大模型应用的响应格式,直接返回拦截页面。
响应码:403
header名:
Content-Typeheader值:
text/plain; charset=utf-8页面响应体:
{"error_id":" {::trace_id::}","msg":"包含违规信息,响应被拦截"}
示例2:适配大模型应用的响应格式,用户体验好,需根据实际应用响应进行调整。
响应码:200
header名:
Content-Typeheader值:
text/event-stream; charset=utf-页面响应体:
data: {"id":"","object":"chat.completion.chunk","created":1747364919,"model":"deepseek-chat","system_fingerprint":"","choices":[{"index":0,"delta":{"content":"您的输入包含违规内容,已被WAF防护"},"logprobs":null,"finish_reason":"stop"}],"usage":{"prompt_tokens":0,"completion_tokens":0,"total_tokens":0,"prompt_tokens_details":{"cached_tokens":0},"prompt_cache_hit_tokens":0,"prompt_cache_miss_tokens":0}} data: [DONE]
检测响应
勾选此项后,表示检测AI模型响应。请根据实际业务特征,选择非流式响应动作或流式响应动作,支持单独或同时配置。
非流式响应动作
流式响应动作
观察:表示不拦截命中规则的响应,只通过日志记录响应命中了规则。可以在日志查询中查看命中当前规则的响应,分析规则的防护效果(例如,是否有误拦截等)。
撤回:表示撤回命中规则的响应,撤回消息必须为符合大模型平台协议的 SSE 数据格式,且结构需与客户端解析逻辑匹配,否则无法正确触发撤回行为。可以参考如下示例。
以Dify为例,
event字段使用message_replace表示撤回上一条消息,answer字段表示撤回后向用户展示的提示语。客户端在接收 SSE 流时,会监听每条消息的
event字段。当收到"event": "message_replace"时,客户端应:停止接收当前流式输出;
清除或覆盖已渲染的不安全内容;
显示
answer中的提示语作为最终响应。
data: {"event": "message_replace", "conversation_id": "", "message_id": "", "created_at": 1755685383, "task_id": "", "id": "", "answer": "内容不合法,响应被撤回!", "from_variable_selector": null}
应答替换:表示命中规则的攻击请求,WAF将原始请求转发至后端大模型,并以用户配置的自定义应答内容替换大模型的真实响应。仅需配置具体的响应文案,无需适配大模型的响应格式。例如,可配置响应文案为:“响应存在不合法内容,已被WAF防护”。
提示词攻击检测
规则名称:填写一个便于识别的规则名称。
防护维度:选择提示词攻击检测。
生效等级:设置威胁等级,可选项:高风险、中风险、低风险。
检测请求:WAF检测用户请求,继续选择当请求命中该规则时,要执行的防护动作。可选项:
观察:不拦截命中规则的请求,只通过日志记录请求命中了规则。可以在日志查询中查看命中当前规则的请求,分析规则的防护效果(例如,是否有误拦截等)。
应答替换:命中规则的攻击请求,WAF将原始请求转发至后端大模型,并以用户配置的自定义应答内容替换大模型的真实响应。仅需配置具体的响应文案,无需适配大模型的响应格式。例如,可配置响应文案为:“请求存在不合法内容,已被WAF防护”。
拦截:命中规则的攻击流量被WAF拦截,不转发到后端大模型。支持选择自定义响应页面,可参考如下示例。
示例1:不适配大模型应用的响应格式,直接返回拦截页面。
响应码:403
header名:
Content-Typeheader值:
text/plain; charset=utf-8页面响应体:
{"error_id":" {::trace_id::}","msg":"包含违规信息,响应被拦截"}
示例2:适配大模型应用的响应格式,用户体验好,需根据实际应用响应进行调整。
响应码:200
header名:
Content-Typeheader值:
text/event-stream; charset=utf-页面响应体:
data: {"id":"","object":"chat.completion.chunk","created":1747364919,"model":"deepseek-chat","system_fingerprint":"","choices":[{"index":0,"delta":{"content":"您的输入包含违规内容,已被WAF防护"},"logprobs":null,"finish_reason":"stop"}],"usage":{"prompt_tokens":0,"completion_tokens":0,"total_tokens":0,"prompt_tokens_details":{"cached_tokens":0},"prompt_cache_hit_tokens":0,"prompt_cache_miss_tokens":0}} data: [DONE]
黑名单词库
规则名称:填写一个便于识别的规则名称。
防护维度:选择黑名单词库,然后单击配置自定义词库,前往AI安全护栏进行配置,具体操作,请参见词库管理。
检测请求与检测响应:对其进行勾选,表示WAF检测用户请求或AI模型响应。支持单独或同时配置。
检测请求
勾选此项后,表示检测用户请求。请继续选择需执行的防护动作。可选项:
观察:表示不拦截命中规则的请求,仅通过日志记录请求命中了规则。可以在日志查询中查看命中当前规则的请求,分析规则的防护效果(例如,是否有误拦截等)。
应答替换:表示命中规则的攻击请求,WAF将原始请求转发至后端大模型,并以用户配置的自定义应答内容替换大模型的真实响应。仅需配置具体的响应文案,无需适配大模型的响应格式。例如,可配置响应文案为:“请求存在不合法内容,已被WAF防护”。
拦截:表示命中规则的攻击流量被WAF拦截,不转发到后端大模型。支持选择自定义响应页面,可参考如下示例。
示例1:不适配大模型应用的响应格式,直接返回拦截页面。
响应码:403
header名:
Content-Typeheader值:
text/plain; charset=utf-8页面响应体:
{"error_id":" {::trace_id::}","msg":"包含违规信息,响应被拦截"}
示例2:适配大模型应用的响应格式,用户体验好,需根据实际应用响应进行调整。
响应码:200
header名:
Content-Typeheader值:
text/event-stream; charset=utf-页面响应体:
data: {"id":"","object":"chat.completion.chunk","created":1747364919,"model":"deepseek-chat","system_fingerprint":"","choices":[{"index":0,"delta":{"content":"您的输入包含违规内容,已被WAF防护"},"logprobs":null,"finish_reason":"stop"}],"usage":{"prompt_tokens":0,"completion_tokens":0,"total_tokens":0,"prompt_tokens_details":{"cached_tokens":0},"prompt_cache_hit_tokens":0,"prompt_cache_miss_tokens":0}} data: [DONE]
检测响应
勾选此项后,表示检测AI模型响应。请根据实际业务特征,选择非流式响应动作或流式响应动作,支持单独或同时配置。
非流式响应动作
流式响应动作
观察:表示不拦截命中规则的响应,只通过日志记录响应命中了规则。可以在日志查询中查看命中当前规则的响应,分析规则的防护效果(例如,是否有误拦截等)。
撤回:表示撤回命中规则的响应,撤回消息必须为符合大模型平台协议的 SSE 数据格式,且结构需与客户端解析逻辑匹配,否则无法正确触发撤回行为。可以参考如下示例。
以Dify为例,
event字段使用message_replace表示撤回上一条消息,answer字段表示撤回后向用户展示的提示语。客户端在接收 SSE 流时,会监听每条消息的
event字段。当收到"event": "message_replace"时,客户端应:停止接收当前流式输出;
清除或覆盖已渲染的不安全内容;
显示
answer中的提示语作为最终响应。
data: {"event": "message_replace", "conversation_id": "", "message_id": "", "created_at": 1755685383, "task_id": "", "id": "", "answer": "内容不合法,响应被撤回!", "from_variable_selector": null}
应答替换:表示命中规则的攻击请求,WAF将原始请求转发至后端大模型,并以用户配置的自定义应答内容替换大模型的真实响应。仅需配置具体的响应文案,无需适配大模型的响应格式。例如,可配置响应文案为:“响应存在不合法内容,已被WAF防护”。
在防护资产处选择在资产管理创建的资产,使防护模板对这些资产生效。
说明一个防护模板支持关联多个资产,但每个资产只能关联一个防护模板。
后续步骤
防护模板创建完成后,可以在WAF与AI安全护栏控制台查看防护效果:
查看并管理防护模板
在规则模板页签中,可对防护模板列表执行以下管理操作:
查看与检索:浏览已创建的防护模板。支持通过页面顶部的搜索框,按资产、模板或规则进行精确筛选。
启停控制:通过右侧的开关按钮开启或关闭模板。处于关闭状态的模板将不产生任何防护效果。
编辑与维护:对目标防护模板执行编辑、删除或复制操作。
使用限制
对于云产品接入,仅支持源自杭州集群的ECS、CLB和NLB实例的防护对象。 其他地域集群以及其他云产品类型暂不支持,相关能力正在逐步上线。
对于CNAME接入,无上述限制。
如有相关需求,请联系您的商务经理。