ArangoDB AQL 中有类似 mysqli_real_escape_string 的东西吗?

问题描述 投票:0回答:1

在 MySQL 中使用

mysqli_real_escape_string
有明显的安全原因。

现在我正在通过 PHP 向 ArangoDB 发送查询。 AQL 查询还包含变量。在 MySQL 中,我学会了用

mysqli_real_escape_string
来准备它们。

Arango AQL 中是否有类似的东西可以在查询中使用变量之前准备变量? 不幸的是我在 Arango 文档中没有找到类似的内容。非常欢迎任何建议。

php arangodb aql arangodb-php
1个回答
0
投票

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/

希望有帮助

© www.soinside.com 2019 - 2024. All rights reserved.