系统性梳理 LLM 应用的攻击面(提示词注入、上下文操控、工具误用),给出 OWASP LLM Top 10 的具体防御方案和信任边界划分。
大语言模型应用引入了传统 Web 安全策略无法全面覆盖的攻击面。提示词注入、间接上下文操纵以及意外的工具执行都可能绕过身份验证、数据泄露或触发未授权操作。本指南概述了实用的、以代码为先的防御措施,可在推理层降低风险,无论你是调用专有 API 还是通过 Oxlo.ai 运行开源模型。
首先映射 LLM 架构特有的威胁。OWASP LLM 应用 Top 10 将提示词注入、不安全的输出处理和过度代理列为关键风险。与 SQL 注入不同,提示词注入针对的是指令层本身。攻击者不需要找到语法漏洞,只需要找到开发者意图与模型理解之间的语义缺口。
明确记录信任边界。用户提示词视为不可信,系统提示词视为半可信,从搜索或 RAG 管道检索的任何上下文都视为可能已被攻陷。如果你的应用根据模型输出执行代码、查询数据库或调用外部 API,你就已进入高风险领域,需要严格的沙箱隔离。
LLM 的输入验证并非已解决的问题,但分层防御可以降低被利用的可能性。结合结构约束与语义检查,而非仅依赖正则过滤。
首先,强制执行严格的输入类型和长度限制。如果你的用例期望一个 JSON 对象,在它到达模型之前验证模式。其次,使用分隔符将指令与数据分离,但永远不要假设分隔符是万无一失的。第三,实现下游内容过滤器,标记越狱模式、角色扮演请求和已知注入前缀。
import json
from pydantic import BaseModel, ValidationError
class UserQuery(BaseModel):
topic: str
max_items: int
def sanitize_input(raw: str) -> dict:
try:
parsed = json.loads(raw)
query = UserQuery(**parsed)
# Block common injection keywords in user-controlled fields
blocked = ["ignore previous instructions", "system prompt", "DAN"]
if any(b in query.topic.lower() for b in blocked):
raise ValueError("Blocked content detected")
return query.model_dump()
except (json.JSONDecodeError, ValidationError) as e:
raise ValueError(f"Invalid input: {e}")
# Usage before sending to Oxlo.ai or any provider
safe_payload = sanitize_input(user_json)
此模式适用于任何推理端点。如果你将流量路由到 Oxlo.ai,同样的预处理层在请求到达 https://api.oxlo.ai/v1/chat/completions 端点之前适用。
LLM 输出永远不应直接作为代码、SQL 或 shell 命令执行。始终针对严格模式解析和验证结构化输出。如果你的应用需要结构化数据,在可用时使用 JSON 模式或约束解码。
Oxlo.ai 在其 LLM 目录中支持 JSON 模式和函数调用,包括 Llama 3.3 70B、Qwen 3 32B 和 DeepSeek R1 671B MoE。将模型约束为有效的 JSON 模式可消除一整类输出格式化攻击,并简化下游验证。
import openai
client = openai.OpenAI(
base_url="https://api.oxlo.ai/v1",
api_key="YOUR_OXLO_API_KEY"
)
response = client.chat.completions.create(
model="llama-3.3-70b",
messages=[{"role": "user", "content": "Extract name and email"}],
response_format={"type": "json_object"}
)
# Validate before use
output = json.loads(response.choices[0].message.content)
assert "name" in output and "email" in output
函数调用和工具使用使 LLM 能够与外部系统交互。没有边界,被攻陷的提示词可以按非预期顺序调用工具。对每个工具定义应用最小权限原则。
定义范围狭窄的函数并要求必需参数。避免使用执行破坏性操作(如删除或支付)的工具而不经过人工确认。维护每个对话上下文中可调用工具名称的允许列表,并记录每次调用的完整参数以供审计。
Oxlo.ai 在其聊天和推理模型中提供函数调用和工具使用,包括 Kimi K2.6、GLM 5 和 Minimax M2.5。由于 Oxlo.ai 完全兼容 OpenAI SDK,你可以在最小更改下移植现有代理框架,同时在自己的中间件中加强这些控制。
安全和成本控制高度重叠。攻击者如果获得你的 API 密钥,可以生成过多请求,推高运营成本并可能污染审计日志。按用户、IP 和 API 密钥实施分层限速。
基于 Token 的计费使安全团队的预算预测变得复杂,因为单个长上下文提示词消耗的资源可能相当于数百个短查询。Oxlo.ai 使用基于请求的定价,每个 API 请求一个统一费用,不受提示词长度影响。对于安全监控、异常检测和红队测试,这意味着即使在评估长上下文攻击向量或代理工作负载时,成本也是可预测的。你可以在 https://oxlo.ai/pricing 查看当前方案。
假设发送到推理端点的任何数据都可能被记录或保留。预过滤提示词以移除 PII、凭据和内部标识符。如果你的工作负载需要处理敏感文档,评估提供专用基础设施和明确数据保留政策的供应商。
Oxlo.ai 提供企业级套餐,包含自定义合同、无限制请求和专用 GPU。对于无法将受监管数据发送到共享推理端点的组织,这提供了隔离环境,同时保留 OpenAI SDK 兼容性和对 DeepSeek V4 Flash、Kimi K2.6 等模型的访问。
全面的日志记录对于事件响应至关重要。记录请求元数据、工具调用和模型输出。尽可能避免记录原始 PII,或对敏感提示词段应用字段级加密。
设置异常模式检测规则:上下文长度突然激增、重复函数调用循环,或包含内部 IP 地址或密钥的输出负载。如果你使用 Oxlo.ai,按请求的扁平计费模式鼓励彻底的红队测试和持续监控,而没有与基于 Token 计费相关的成本差异。
保护 LLM 应用需要从边界防护思维转向语义层防御。严格验证输入,用模式约束输出,限制工具代理,并维护审计跟踪。你选择的推理平台应支持这些实践而不增加架构摩擦。
Oxlo.ai 提供以开发者为中心的平台,拥有 45+ 开源和专有模型、完全 OpenAI SDK 兼容性和基于请求的定价,简化了安全工作负载的成本治理。无论你是在免费套餐上原型设计还是在专用企业 GPU 上部署隔离推理,Oxlo.ai 都自然融入生产 LLM 系统的深度防御策略。