5

JDO(Google App Engine)でクエリのパラメータをエスケープするにはどうすればよいですか?

たとえば、変数名に安全でない文字が一重引用符(')として含まれている可能性がある場合、次のスニペットを安全にするにはどうすればよいですか?

PersistenceManager pm = ...;
String query = "select from Person where name='"+name+"'";
List<Shortened> shortened = (List<Shortened>) pm.newQuery(query).execute();
4

1 に答える 1

11

代わりにクエリパラメータを使用してください。クエリ自体に値を含めるよりもはるかに安全です。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");
于 2009-09-30T09:38:09.553 に答える