Python 应对表单中的用户数据执行哪些检查?

Python 应对表单中的用户数据执行哪些检查?,python,google-app-engine,Python,Google App Engine,我正在编写一个应用程序引擎应用程序,它有一些输入字段 我是否需要考虑一些类似的问题?您应该验证用户的任何输入是否满足您的要求。例如,如果您需要一个正整数,那么请确保这是您得到的 至于字符串,只要不手工构造查询,就不必担心SQL(本例中为GQL)注入。而是使用方法或提供的方法传递值(例如)。然后,这些类将负责制定查询,这样您就不必担心语法(或注入) 示例(改编自之前链接到的文档): 有许多表单库为您完成了大部分的艰苦工作-您应该使用其中的一个。库包含在App Engine中。这实际上取决于您想对数

我正在编写一个应用程序引擎应用程序,它有一些输入字段


我是否需要考虑一些类似的问题?

您应该验证用户的任何输入是否满足您的要求。例如,如果您需要一个正整数,那么请确保这是您得到的

至于字符串,只要不手工构造查询,就不必担心SQL(本例中为GQL)注入。而是使用方法或提供的方法传递值(例如)。然后,这些类将负责制定查询,这样您就不必担心语法(或注入)

示例(改编自之前链接到的文档):


有许多表单库为您完成了大部分的艰苦工作-您应该使用其中的一个。库包含在App Engine中。

这实际上取决于您想对数据做什么。不过,您可能需要对其进行清理。即使您手动构造查询,用户所能做的最糟糕的事情就是在查询中添加更多筛选器;GQL只选择和
不起任何作用,因此不存在Bobby Tables场景的风险。
# this basic string query is safe
query = Song.all()
query.filter('title =', self.request.get('title'))

# a GqlQuery version of the previous example
query = GqlQuery("SELECT x FROM Song WHERE title = :1",self.request.get('title'))

# sanitize/validate when you have requirements: e.g., year must be a number
query = Song.all()
try:
    year = int(self.request.get('year'))  # make sure we got a number
except:
    show error msg
query.filter('year =', year)