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

时间:2011-03-14 21:14:42

标签: python google-app-engine

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

我是否需要考虑this之类的问题?

2 个答案:

答案 0 :(得分:1)

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

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

示例(改编自与之前相关的文档):

# 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)

答案 1 :(得分:0)

有许多表单库可以为您完成大部分工作 - 您应该使用其中一个。 App Engine附带了Django's newforms库。