Лучший способ проверить ввод данных пользователем JDBC?

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

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
3 370
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Если вы имеете в виду, как убедиться, что вводимые пользователем данные не могут использоваться в атаках с использованием SQL-инъекций, способ сделать это (и способ, которым весь SQL должен быть написан на JDBC) - использовать подготовленные операторы. JDBC автоматически обработает любое необходимое экранирование.

http://java.sun.com/docs/books/tutorial/jdbc/basics/prepared.html

+1: Всегда используйте переменные привязки! «Экранировать» входные данные для сборки динамических операторов SQL глупо по многим причинам.

S.Lott 28.09.2008 17:06

Чтобы добавить к предложению @skaffman, PreparedStatements решает проблему для большинства приложений. Однако есть некоторые приложения, в которых (части) операторов SQL (в отличие от только значений параметров) берутся из пользовательского ввода (например, параметр URL, содержащий предложение ORDER BY). Просто убедитесь, что вы продезинфицируете и их, или, что еще лучше, по возможности избегайте таких дизайнов.

Этот пример не особенно убедителен. если вы хотите иметь предложение упорядочивания, вводимое пользователем, тогда имейте фиксированный набор параметров, который приложение распознает, а затем имеет таблицу поиска имен столбцов для каждого разрешенного значения.

skaffman 17.04.2009 18:22

Другие вопросы по теме