在 MySQL 中使用
mysqli_real_escape_string
有明显的安全原因。
现在我正在通过 PHP 向 ArangoDB 发送查询。 AQL 查询还包含变量。在 MySQL 中,我学会了用
mysqli_real_escape_string
来准备它们。
Arango AQL 中是否有类似的东西可以在查询中使用变量之前准备变量? 不幸的是我在 Arango 文档中没有找到类似的内容。非常欢迎任何建议。
ArangoDB 使用参数化查询在 AQL 查询中安全地包含变量,这有助于防止类似于 SQL 注入的注入攻击。
例如,您有一个用户集合,并且您想通过用户名查询用户。您可以使用参数化查询与 ArangoDB-PHP 客户端(这支持参数化查询)
,而不是将用户名直接连接到 AQL 字符串中(这是不安全的)$statement = new ArangoStatement(
$connection,
[
"query" => "FOR user IN users FILTER user.username == @username RETURN user",
"bindVars" => ["username" => $username]
]
);
$cursor = $statement->execute();
$result = $cursor->getAll();
查询使用@username作为占位符。
语句选项中的“bindVars”数组提供了实际的
@用户名的值。
我不是 ArangoDB 方面的专家,但已经使用过它了一些,你可以在这里找到更多关于它的信息 https://docs.arangodb.com/3.12/aql/fundamentals/bind-parameters/
希望有帮助