这些天我正在使用 AQL,并且我正在创建一个用于动态创建 AQL 脚本的库。
因为我没有找到与 PARAMETER INJECTION 问题(如 SQL INJECTION)相关的任何内容,如果我直接在 AQL 查询字符串中设置我的 FILTER 变量,您认为这是否安全?
这些天我正在使用 AQL,并且我正在创建一个用于动态创建 AQL 脚本的库。
因为我没有找到与 PARAMETER INJECTION 问题(如 SQL INJECTION)相关的任何内容,如果我直接在 AQL 查询字符串中设置我的 FILTER 变量,您认为这是否安全?
如果您对所有用户定义的输入使用 bindParameters,则 AQL 解析器不会评估插入的值,因此不会执行注入的代码。
安全查询:
FOR x IN items FILTER x.name == @name RETURN x
不安全的查询:
"FOR x IN items FILTER x.name == " + name + " RETURN x"
插入某事。喜欢
'a' LET t = (FOR h IN items DELETE h)
in name 将在保存查询中返回具有该字符串的所有元素(无害)。在不安全的查询中,它将删除项目中的所有元素(有害)。