Как избежать строк в postgres, таких как SQL-операторы? - PullRequest
1 голос
/ 07 августа 2011

Я использую Rails для проекта с postgresql в качестве основной базы данных.У меня есть форма поиска, которая нуждается в нескольких модификациях.В частности, я должен убедиться, что если какой-то один из них напишет что-то вроде «удаления таблицы из всех пользователей», у меня не будет катастрофы.Есть ли в любом случае я могу ограничить dearch только одной таблицей и убедиться, что поиск что-то вроде "drop table allusers" не удаляет таблицу, а просто возвращает результаты?

Ответы [ 2 ]

3 голосов
/ 07 августа 2011

Если вы используете ActiveRecord для выполнения всех запросов и заполнителей (?), Где бы вы ни передавали параметры, тогда вам не о чем беспокоиться.Данные экранируются, и пользовательский ввод не может изменить природу запроса.

http://guides.rubyonrails.org/security.html#sql-injection

0 голосов
/ 07 августа 2011

Самый простой подход, вероятно, состоит в том, чтобы убедиться, что вы правильно настроили свои роли в базе данных.Роль, под которой выполняется запрос, должна иметь возможность выполнять только то, что вы хотите.Похоже, вам нужна только роль, которую ваше веб-приложение использует для подключения к базе данных, чтобы иметь возможность выдавать операторы SELECT для таблицы allusers.Если это так, создайте роль и предоставьте ей привилегию SELECT для таблицы allusers.

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

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