大模型输入验证与恶意指令过滤机制优化
在大模型应用中,输入验证和恶意指令过滤是保障系统安全的关键环节。本文将从工程实践角度,分享如何构建有效的输入验证机制和恶意指令过滤策略。
输入验证机制
import re
from typing import List, Dict
class InputValidator:
def __init__(self):
# 定义敏感模式匹配规则
self.suspicious_patterns = [
r'\b(union|select|insert|update|delete|drop|create)\b', # SQL关键字
r'\b(eval|exec|system|shell)\b', # 系统执行函数
r'<script.*?>.*?</script>', # XSS攻击
r'\b(\d{1,3}\.){3}\d{1,3}\b', # IP地址模式
]
def validate_input(self, input_text: str) -> Dict[str, bool]:
result = {
'is_safe': True,
'violations': []
}
for pattern in self.suspicious_patterns:
if re.search(pattern, input_text, re.IGNORECASE):
result['is_safe'] = False
result['violations'].append(f"检测到可疑模式: {pattern}")
return result
# 使用示例
validator = InputValidator()
test_input = "SELECT * FROM users WHERE id=1;"
result = validator.validate_input(test_input)
print(result)
恶意指令过滤策略
import json
from typing import Set
class MaliciousFilter:
def __init__(self):
# 预定义恶意指令词典
self.malicious_keywords = {
'system_commands': ['system', 'exec', 'eval', 'shell'],
'sql_injection': ['union', 'select', 'insert', 'update', 'delete'],
'xss_patterns': ['<script>', '</script>', 'onload=', 'javascript:']
}
# 安全白名单
self.whitelist = ['user_id', 'query', 'search']
def filter_input(self, input_text: str) -> str:
# 转换为小写进行匹配
lower_text = input_text.lower()
# 检查是否包含恶意关键词
for category, keywords in self.malicious_keywords.items():
for keyword in keywords:
if keyword in lower_text:
raise ValueError(f"检测到恶意指令: {keyword}")
return input_text # 返回安全输入
# 实际应用示例
try:
filter_obj = MaliciousFilter()
safe_input = filter_obj.filter_input("用户查询")
print(f"安全输入: {safe_input}")
except ValueError as e:
print(f"过滤失败: {e}")
可复现测试步骤
- 创建输入验证器实例
- 准备测试用例(正常输入和恶意输入)
- 调用validate_input方法进行检测
- 观察返回结果判断是否安全
该方案可集成到大模型的前置处理层,有效降低安全风险。

讨论