tldr: Могу ли я безопасно передать необработанную строку запроса (полученную в виде параметра URL) в Lucene QueryParser без какой-либо дополнительной очистки входных данных?
Я не эксперт по безопасности, но мне нужен совет.Как говорится в заголовке, безопасно ли использовать этот метод контроллера:
@CrossOrigin(origins = "${allowed-origin}")
@GetMapping(value = "/search/{query_string}", produces = MediaType.APPLICATION_JSON_VALUE)
public List doSearch(@PathVariable("query_string") String queryString) {
return searchQueryHandlerService.doSearch(queryString);
}
В тандеме с этим методом обслуживания (обработка ошибок предназначена только для тестирования):
public List doSearch(String queryString) {
LOGGER.debug("Parsing query string: " + queryString);
try {
Query q = new QueryParser(null, standardAnalyzer).parse(queryString);
FullTextEntityManager manager = Search.getFullTextEntityManager(entityManager);
FullTextQuery fullTextQuery = manager.createFullTextQuery(q, Poem.class, Book.class, Section.class);
return fullTextQuery.getResultList();
} catch (ParseException e) {
LOGGER.error(e);
return Collections.emptyList();
}
}
Только сбазовая дезинфекция?Если это небезопасно, могу ли я принять меры, чтобы сделать это безопасным?
Любая помощь с благодарностью.
Я изучал это время от времени в течение последних нескольких недель, и я не могу найти причину, по которой это не будет безопасным, но это такой неясный вопрос (вобласти, с которой я не знаком), что я могу упустить какую-то очевидную, фундаментальную проблему, которую каждый, кто работает в этой области, сразу увидит.