Есть ли возможность фильтровать запросы в PostgreSQL? - PullRequest
0 голосов
/ 21 сентября 2010

Я хочу ограничить доступ к таблице имени пользователя и пароля одним шаблоном запроса, например:

SELECT count(id) AS auth_result
  FROM user
 WHERE username = '%s' 
   AND password = SHA1('%s')

(этот запрос не претендует на работу с точки зрения уязвимости внедрения, просто пример)

Это возможно? или мне не хватает другого подхода?

Ответы [ 3 ]

2 голосов
/ 21 сентября 2010

Вы можете отозвать любой доступ к таблице user у всех пользователей, кроме владельца, и создать представление с таким кодом:

create view auth_view as
select id, username, sha1(password) as sha1pass
  from user;

Тогда ваш запрос будет выглядеть так:

select count(id)
  from auth_view
 where username = '%s'
   and sha1pass = sha1('%s')

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

0 голосов
/ 22 сентября 2010

Я бы предложил вам написать функцию и сделать ее ОПРЕДЕЛИТЕЛЕМ БЕЗОПАСНОСТИ.См. Например http://www.hagander.net/talks/hidden%20gems%20of%20postgresql.pdf, стр. 28-36.

0 голосов
/ 21 сентября 2010

Я не знаю, хорошо ли то, что вы планируете, но это должно быть возможно с правилами перезаписи . Никогда не играл с ним, хотя.

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