NoSQL 注入 DynamoDB
NoSQL Injection into DynanmoDB
有谁知道在与 NO SQL 数据库交互时,'Dynogels' 库是否存在任何已知的 no SQL 漏洞。
不使用任何高级查询,仅使用现有方法的标准。 query(), where(), equals() 等
也许不是真正的已知问题,但通常处理输入数据,并将其保存到您始终需要清理数据以防止注入的任何数据库中。
由于您在 DynanmoDB 中经常处理 JSON,因此在将用户输入反序列化为 JSON 对象并将这些对象直接插入或更新到 NoSQL 数据库时要特别小心.例如,确保用户不能将额外字段添加到 JSON 对象中。
这完全取决于您验证用户输入的方式。
我认为可以肯定地说,NoSQL 数据库在功能和 JSON 对象方面更多地访问数据库。与传统的 string based access
(TSQL) 数据库相比,您不必担心 SQL 注入。
Dynogels 使用 ExpressionAttributeValues
结构传递提供的 filter/query 值,该结构与查询结构本身 (FilterExpression
) 是分开的。这类似于使用参数化 SQL 查询,它在与查询本身不同的结构中传递参数。
换句话说,只要你只使用不受信任的输入作为过滤值,改变查询结构的注入应该是不可能的:
// Assume "req.body" is untrusted input
Table.query(req.body.key)
.filter('somecolumn').equals(req.body.somecolumn)
.exec(callback);
以上是安全的,只要不是允许用户查询任意key的应用级漏洞即可。在上面使用不受信任的输入的所有上下文中,它不可能影响查询的结构。
披露:我是 dynogels 的维护者之一。如果您发现漏洞,请私下向我们披露,以便我们在公开发布详细信息之前解决它。
有谁知道在与 NO SQL 数据库交互时,'Dynogels' 库是否存在任何已知的 no SQL 漏洞。
不使用任何高级查询,仅使用现有方法的标准。 query(), where(), equals() 等
也许不是真正的已知问题,但通常处理输入数据,并将其保存到您始终需要清理数据以防止注入的任何数据库中。
由于您在 DynanmoDB 中经常处理 JSON,因此在将用户输入反序列化为 JSON 对象并将这些对象直接插入或更新到 NoSQL 数据库时要特别小心.例如,确保用户不能将额外字段添加到 JSON 对象中。
这完全取决于您验证用户输入的方式。
我认为可以肯定地说,NoSQL 数据库在功能和 JSON 对象方面更多地访问数据库。与传统的 string based access
(TSQL) 数据库相比,您不必担心 SQL 注入。
Dynogels 使用 ExpressionAttributeValues
结构传递提供的 filter/query 值,该结构与查询结构本身 (FilterExpression
) 是分开的。这类似于使用参数化 SQL 查询,它在与查询本身不同的结构中传递参数。
换句话说,只要你只使用不受信任的输入作为过滤值,改变查询结构的注入应该是不可能的:
// Assume "req.body" is untrusted input
Table.query(req.body.key)
.filter('somecolumn').equals(req.body.somecolumn)
.exec(callback);
以上是安全的,只要不是允许用户查询任意key的应用级漏洞即可。在上面使用不受信任的输入的所有上下文中,它不可能影响查询的结构。
披露:我是 dynogels 的维护者之一。如果您发现漏洞,请私下向我们披露,以便我们在公开发布详细信息之前解决它。