
1) 【一句话结论】大模型API的安全防护需从网络层(防DDoS)、输入层(防注入/恶意指令)、输出层(防有害内容)多维度设计,结合限流、输入验证(白/黑名单、正则、模型内过滤)、输出过滤(内容审核)等技术,形成纵深防御体系。
2) 【原理/概念讲解】
3) 【对比与适用场景】
输入验证方法对比:
| 方法 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 白名单 | 仅允许符合预设规则的输入 | 严格,误判率低 | 敏感场景(金融、医疗) | 规则维护成本高 |
| 黑名单 | 禁止包含危险字符的输入 | 简单,快速部署 | 已知攻击类型 | 易被新型攻击绕过 |
| 正则表达式 | 匹配/过滤特定模式 | 灵活,自定义规则 | 文本输入(邮箱、密码) | 复杂规则易出错 |
| 模型内过滤 | 利用大模型自身能力过滤输入 | 智能化,适应新攻击 | 高级场景 | 依赖模型性能 |
4) 【示例】
def validate_input(user_input, allowed_patterns):
for pattern in allowed_patterns:
if re.fullmatch(pattern, user_input):
return True
return False
# 验证邮箱
allowed_emails = [r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$']
if validate_input(user_input, allowed_emails):
process_input(user_input)
else:
raise ValueError("输入格式错误")
from collections import deque
import time
class RateLimiter:
def __init__(self, rate, capacity):
self.rate = rate # 每秒令牌数
self.capacity = capacity
self.tokens = capacity
self.last_check = time.time()
def get_tokens(self):
now = time.time()
elapsed = now - self.last_check
self.last_check = now
self.tokens = min(self.capacity, self.tokens + elapsed * self.rate)
return self.tokens
def consume(self, tokens_needed=1):
if self.get_tokens() >= tokens_needed:
self.tokens -= tokens_needed
return True
return False
# 使用示例
limiter = RateLimiter(rate=5, capacity=10) # 每秒最多5个请求
if limiter.consume():
handle_request()
else:
return "请求过多,请稍后重试"
5) 【面试口播版答案】
“大模型API的安全防护需从多维度构建,核心是防DDoS、防输入攻击、防输出有害内容。防DDoS攻击常用限流技术(如令牌桶算法,限制单IP请求速率),避免被大量请求淹没;输入级攻击(如SQL注入、恶意指令注入)可通过输入验证,比如白名单(仅允许符合预设规则的输入,如邮箱正则)或黑名单(过滤危险字符),或结合模型内过滤(利用大模型学习识别恶意输入);输入验证要结合业务逻辑,输出过滤则对模型返回内容审核(如内容安全模型过滤仇恨言论)。整体需结合技术(限流、输入/输出过滤)和策略(访问控制、日志监控),形成纵深防御。”
6) 【追问清单】
7) 【常见坑/雷区】