我正在编写一个应用引擎应用,它有一些输入字段。
我是否需要考虑this之类的问题?
答案 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库。