Вы должны подтвердить, что любые входные данные от ваших пользователей соответствуют вашим требованиям. Например, если вам нужно положительное целое число, убедитесь, что это то, что вы получили.
Что касается строк, вам не нужно беспокоиться о внедрении 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)