Скрыть триггер в SQL Server 2005 - PullRequest
0 голосов
/ 15 марта 2011

Здравствуйте, все, что я пытаюсь создать в вместо триггера вставки , который имеет следующий синтаксис

create trigger HashPassword on PasswordTBl
instead of insert
as 
begin
  insert into PasswordTBl (PasswordProxy)
    select HashBytes('MD5', '@!'+PasswordProxy) 
    from inserted;
  insert into master.dbo.PasswordTBl1(PasswordProxy) 
    select PasswordProxy from inserted;
end

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

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 15 марта 2011

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

create trigger HashPassword on PasswordTBl
WITH ENCRYPTION
instead of insert
as 
begin
   ......

Это простая и легкая защита - но также довольно слабая;Есть способы расшифровки этого исходного кода снова.Это может удержать подлого сотрудника, но определенно не решительного хакера ....

1 голос
/ 15 марта 2011

Ваши пользователи не должны иметь возможность прочитать определение триггера, даже если у них есть права на INSERT / UPDATE / SELECT. Если они могут, у них слишком много прав.

WITH ENCRYPTION только запутывает код от народа с уже правами.

См. GRANT VIEW DEFINITION: Один , Два и Три . Обратите внимание, что это подразумевается правами ALTER и db_owner.

Один вопрос: если кто-то может увидеть код, он, вероятно, увидит вашу резервную копию ... Даже если она находится в master, пользователь требует прав для записи в таблицу, потому что это другой базы данных.

Если вы не предоставили права пользователям или публике в master, это подразумевает права системного администратора. Это означает, что кто-то может отменить WITH ENCRYPTION легко

Господи, это неправильно на многих уровнях.

...