Экранирование строк SQL в Java

Фон:

В настоящее время я разрабатываю интерфейс Java для базы данных Enterprise CMS (Business Objects). В данный момент я создаю функцию, позволяющую пользователю создавать пользовательский запрос к базе данных. Я уже реализовал меры, чтобы гарантировать, что пользователь может выбирать только с использованием подмножества доступных столбцов и операторов, которые были одобрены для доступа пользователя (например, SI_EMAIL_ADDRESS может быть выбран, в то время как более мощные поля, такие как SI_CUID, не могут быть). Пока что дела идут гладко, но теперь пришло время обезопасить эту функцию от потенциальных атак SQL-инъекций.

Вопрос:

Я ищу метод для экранирования строк ввода пользователя. Я уже видел PerparedStatement, однако я вынужден использовать сторонние API для доступа к базе данных. Эти API являются неизменными для меня, и прямой доступ к базе данных не может быть и речи. Отдельные методы принимают строки, представляющие запросы, которые должны быть выполнены, тем самым аннулируя PreparedStatement (который, насколько мне известно, должен выполняться при прямом соединении с базой данных).

Я рассмотрел использование String.replace (), но я не хочу изобретать велосипед, если это возможно. Кроме того, я далек от экспертов по безопасности, которые разработали PerparedStatement.

Я также посмотрел ссылку на API Java для PerparedStatement, надеясь найти какой-то метод toString (). Увы, я не смог найти ничего подобного.

Любая помощь очень ценится. Заранее спасибо.

Рекомендации:

Java - escape-строка для предотвращения внедрения SQL

Java-эквивалент для PHP mysql_real_escape_string ()

Ответы на вопрос(3)

Ваш ответ на вопрос