Вопрос

Как избежать параметров запросов в JDO (Google App Engine)?

Например, как сделать следующий фрагмент безопасным, если имя переменной может содержать небезопасные Chars в виде одиночных кавычек (')

PersistenceManager pm = ...;
String query = "select from Person where name='"+name+"'";
List<Shortened> shortened = (List<Shortened>) pm.newQuery(query).execute();
Это было полезно?

Решение

Вместо этого используйте параметры запроса, это гораздо безопаснее, чем включать значения в самом запросе. Вот пример из документации GAE:

Query query = pm.newQuery("select from Employee " +
                          "where lastName == lastNameParam " +
                          "order by hireDate desc " +
                          "parameters String lastNameParam");

List<Employee> results = (List<Employee>) query.execute("Smith");
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top