0

有谁知道在与 NO SQL 数据库交互时,“Dynogels”库是否存在任何已知的 SQL 漏洞。

不使用任何高级查询,只使用现有方法的标准。查询(),哪里(),等于()等。

4

2 回答 2

0

也许不是一个真正已知的问题,但通常处理输入数据,并将其保存到您始终必须清理数据以防止注入的任何数据库中。

由于您在 DynanmoDB 中经常处理 JSON,因此在将用户输入反序列化为 JSON 对象并将这些对象直接插入或更新到 NoSQL 数据库时要特别小心。例如,确保用户不能将额外的字段添加到 JSON 对象中。

这完全取决于您如何验证用户输入。

我认为可以肯定地说 NoSQL 数据库在函数和 JSON 对象方面更多地访问数据库。string based access与传统(TSQL) 数据库相比,您不必担心 SQL 注入。

于 2019-10-12T16:42:36.437 回答
0

Dynogels 使用ExpressionAttributeValues结构传递提供的过滤器/查询值,该结构与查询结构本身 ( ) 是分开的FilterExpression。这类似于使用参数化 SQL 查询,它以独立于查询本身的结构传递参数。

换句话说,只要您只使用不受信任的输入作为过滤器值,就不可能进行更改查询结构的注入:

// Assume "req.body" is untrusted input
Table.query(req.body.key)
    .filter('somecolumn').equals(req.body.somecolumn)
    .exec(callback);

以上是安全的,只要不是允许用户查询任何密钥的应用程序级漏洞。在上面使用不可信输入的所有上下文中,它不可能影响查询的结构。


披露:我是 dynogels 的维护者之一。如果您发现漏洞,请私下向我们披露,以便我们在公开发布详细信息之前解决它。

于 2019-10-12T16:47:33.267 回答