2013-06-19 4 views
-1

Можем ли мы использовать фильтр, чтобы избежать инъекции sql, которая поступает через URL-адрес? есть ли для этого фильтры с открытым исходным кодом? Есть такие фильтры с весной, а ..Фильтры с открытым исходным кодом

Пожалуйста, ответьте мне

+0

Помните 'magicquotes' от PHP? Они пытались сделать что-то подобное, это была главная критика и теперь не рекомендуется;). Запросить предварительную обработку - это не способ справиться с этим. –

ответ

2

Вы должны фактически избежать запроса, который приходит через URL с помощью prepareStatement() в JDBC, а не применяя какое-то «фильтр» , Если вы используете реализацию ORM с помощью setParameter(), это решает проблему таким образом.

2

Sql injection обрабатывается в слое Persistence (где вы можете использовать Hibernate, JPA, iBatis и т. Д.), Где написаны подготовленные операторы. Убедитесь, что вы используете Prepared statement.

+0

Большое спасибо за ответ – user2056989

0

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

Ваш обычный пользователь не нуждается в CREATE TABLE или DROP TABLE привилегиях, поэтому не давайте им. Таблицы поиска, такие как US_STATES, должны быть доступны только для чтения; не дайте никому INSERT, UPDATE, или DELETE, если это не произойдет. Если Спрингфилд, Иллинойс разрушен в землетрясении, а столица перемещается, то временно дайте привилегии DBA UPDATE.

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

Смежные вопросы