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



我正在编写一个搜索工具,其中一件事就是让用户搜索ndb对象。

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

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

ndb.Query构造函数的参数不能修改或删除数据。如果出现错误,它们可能很容易使您的服务器实例崩溃,或者提供对您可能不希望用户看到的数据的访问,例如通过不希望的namespace设置,但这是最糟糕的情况

尽管如此,我还是会考虑让构造函数不受约束,并使用显式filterorder调用来让用户间接自定义查询——它们受到了更高的约束,我怀疑这些都是查询自定义的关键点,对吧?

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

最新更新