You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用参数化GROQ查询是否能抵御注入攻击?

GROQ参数化查询是否能避免注入攻击?

你的第一个示例(使用参数化$maker的GROQ查询)完全可以避免注入攻击。

当你通过sanityClient.fetch的第二个参数传入变量时,Next-Sanity客户端会自动对参数做转义处理,将$maker视为纯匹配值,而非GROQ语法的一部分解析。无论攻击者从URL传入什么恶意字符串,都会被当作maker字段的匹配内容,不会破坏原查询的结构,也就无法实现注入劫持。

反观你提到的字符串拼接写法,确实存在极高的安全风险:

const query = `*[_type == 'car' && maker == '${maker}'][0]`;

比如攻击者构造URL参数maker的值为' || 1 == 1 || maker == ',拼接后的查询会变成:

*[_type == 'car' && maker == '' || 1 == 1 || maker == ''][0]

这会直接返回所有_type为car的文档,甚至可能被进一步构造出遍历全库、窃取敏感数据等更危险的逻辑。

参数化查询是GROQ官方推荐的安全做法,Next-Sanity的实现也完全遵循这一规范,你可以放心使用这种写法来防范注入攻击。

内容的提问来源于stack exchange,提问作者ptf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 20:22:12