fix(ai): AI 提示词模板添加安全检查
This commit is contained in:
@@ -426,6 +426,8 @@ where
|
||||
S: Clone + Send + Sync + 'static,
|
||||
{
|
||||
require_permission(&ctx, "ai.prompt.manage")?;
|
||||
validate_prompt_safety(&body.system_prompt)?;
|
||||
validate_prompt_safety(&body.user_prompt_template)?;
|
||||
let prompt = state
|
||||
.prompt
|
||||
.create_prompt(
|
||||
@@ -683,3 +685,24 @@ fn build_sse_stream(
|
||||
yield Ok(Event::default().event("done").data(data));
|
||||
}
|
||||
}
|
||||
|
||||
/// 检查提示词内容是否包含可疑注入模式
|
||||
fn validate_prompt_safety(content: &str) -> Result<(), erp_core::error::AppError> {
|
||||
let suspicious = [
|
||||
"ignore previous",
|
||||
"ignore all previous",
|
||||
"ignore above",
|
||||
"disregard previous",
|
||||
"you are now",
|
||||
"new instructions:",
|
||||
];
|
||||
let lower = content.to_lowercase();
|
||||
for pattern in &suspicious {
|
||||
if lower.contains(pattern) {
|
||||
return Err(erp_core::error::AppError::Validation(
|
||||
format!("提示词内容包含不安全模式: {}", pattern),
|
||||
));
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user