Есть ли встроенный способ избежать ввода пользователя в Java с помощью JDBC? Нечто похожее на функцию mysql_real_escape() версии php. Как лучше всего проверить ввод?




Если вы имеете в виду, как убедиться, что вводимые пользователем данные не могут использоваться в атаках с использованием SQL-инъекций, способ сделать это (и способ, которым весь SQL должен быть написан на JDBC) - использовать подготовленные операторы. JDBC автоматически обработает любое необходимое экранирование.
http://java.sun.com/docs/books/tutorial/jdbc/basics/prepared.html
Чтобы добавить к предложению @skaffman, PreparedStatements решает проблему для большинства приложений. Однако есть некоторые приложения, в которых (части) операторов SQL (в отличие от только значений параметров) берутся из пользовательского ввода (например, параметр URL, содержащий предложение ORDER BY). Просто убедитесь, что вы продезинфицируете и их, или, что еще лучше, по возможности избегайте таких дизайнов.
Этот пример не особенно убедителен. если вы хотите иметь предложение упорядочивания, вводимое пользователем, тогда имейте фиксированный набор параметров, который приложение распознает, а затем имеет таблицу поиска имен столбцов для каждого разрешенного значения.
+1: Всегда используйте переменные привязки! «Экранировать» входные данные для сборки динамических операторов SQL глупо по многим причинам.