fix(ai): AI 提示词模板添加安全检查
This commit is contained in:
@@ -426,6 +426,8 @@ where
|
|||||||
S: Clone + Send + Sync + 'static,
|
S: Clone + Send + Sync + 'static,
|
||||||
{
|
{
|
||||||
require_permission(&ctx, "ai.prompt.manage")?;
|
require_permission(&ctx, "ai.prompt.manage")?;
|
||||||
|
validate_prompt_safety(&body.system_prompt)?;
|
||||||
|
validate_prompt_safety(&body.user_prompt_template)?;
|
||||||
let prompt = state
|
let prompt = state
|
||||||
.prompt
|
.prompt
|
||||||
.create_prompt(
|
.create_prompt(
|
||||||
@@ -683,3 +685,24 @@ fn build_sse_stream(
|
|||||||
yield Ok(Event::default().event("done").data(data));
|
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