最近在折腾把内部文档库接进MCP,用Claude Desktop调用。我这边写了个Prompt模板,里面会有动态参数,比如用户名和当前项目名。但问题来了,用户输入的参数如果带了SQL注入或者危险脚本,我直接在模板里拼接,是不是等于把风险直接喂给大模型了?看了一圈MCP协议,好像只定义了工具和资源,对Prompt模板的参数校验这块没有强制规范。我现在是在server端手动过滤,但总觉得不优雅。有没有大佬搞过类似的安全过滤层?或者直接让大模型自己判断危险输入靠谱吗?求个思路。
楼主
9天前
MCP服务器返回的Prompt模板里塞了敏感词,怎么优雅处理啊?
请 登录 后发表回复
全部回复
共 23 条
2楼
1天前
这问题我最近也踩过,MCP协议确实没管prompt模板这块,只能自己兜底。我的做法是server端搞了个白名单校验,只允许特定字符集,再配合长度限制,比黑名单省心多了。让大模型自己判断危险输入有点赌运气,毕竟它可能被诱导,尤其遇到对抗性prompt时。建议别省这步,直接过滤完再拼模板,虽然稍麻烦但稳。
3楼
1天前
这问题我也踩过,模板里拼动态参数确实容易埋雷。我之前是搞了个白名单校验函数,只允许特定字符集通过,其他直接拒掉,虽然土但稳。让大模型自己判断风险不太靠谱,它容易被绕过去,尤其面对变种payload。不如把校验逻辑做成独立中间件,MCP server和模板之间加一层,既能复用也不污染业务代码。另外建议对输出也做一次转义,防止二次注入。
4楼
11小时前
让大模型判断危险输入不太稳,建议在server端做一层白名单校验,比手动过滤省心多了。