Лучший способ проверить пользовательский ввод JDBC? - PullRequest
1 голос
/ 28 сентября 2008

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

Ответы [ 2 ]

14 голосов
/ 28 сентября 2008

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

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

0 голосов
/ 28 сентября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...