我正在编写一个应用引擎应用,它有一些输入字段。
关于 this 之类的问题,我是否需要考虑任何问题? ?
请您参考如下方法:
您应该验证用户的任何输入是否符合您的要求。例如,如果您需要一个正整数,请确保这是您得到的。
就字符串而言,只要您不手动构建查询,就不必担心 SQL(或本例中的 GQL)注入(inject)。而是使用 GqlQuery.bind()方法,或者Query提供的方法传递值(例如 Query.filter() )。然后这些类将负责制定查询,因此您无需担心语法(或注入(inject))。
示例(改编自之前链接的文档):
# 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)
