允许用户为ndb.Query()提供参数是否危险?

时间:2015-02-16 22:13:28

标签: security google-app-engine google-cloud-datastore app-engine-ndb

我正在编写搜索工具,而我要做的一件事就是让用户搜索ndb对象。

让用户选择ndb.Query()函数的参数是危险的吗?它可以用来修改或删除数据吗?

由于我可以提供kind参数,因此结果集将仅限于某些类型。此外,编写一个小的解析器/验证器也将有助于安全性。我只是想确保我在这里做任何太愚蠢的事情。如果有人的话,那么遵循的语法就会很棒。

1 个答案:

答案 0 :(得分:3)

ndb.Query构造函数的参数不能修改或删除数据。如果错误,他们可能很容易崩溃您的服务器实例,或者提供对您可能不希望该用户看到的数据的访问权限,例如,通过不受欢迎的namespace设置 - 但这是关于最糟糕的

尽管如此,我还是考虑让构造函数不受阻碍,并使用显式filterorder调用让用户间接自定义查询 - 它们受到更高限制,我怀疑这些是你的无论如何,查询自定义的关键点,对吧?

并且,通过将此类调用包装到适当的try / except块中以提供对用户错误的准确诊断,可以更轻松地避免崩溃(无论是恶意的还是意外的)......