Как защитить код SQL в SQL Server
Можно ли защитить код хранимой процедуры SQL 2008 от чьих-либо глаз? Может быть, какое-то шифрование или сборка вроде dll?
1 ответ
Да, вы можете сохранить его в зашифрованном виде в базе данных, но если вы это сделаете, убедитесь, что у вас есть оригинальный исходный код, где-то безопасно хранится...
CREATE PROCEDURE dbo.foo
WITH ENCRYPTION
AS
BEGIN
SELECT 'foo'
END
К сожалению, есть по крайней мере два способа победить этот механизм. Одним из них является запуск SQL Profiler во время выполнения хранимой процедуры; это часто может раскрыть текст самой процедуры, в зависимости от того, что делает хранимая процедура (например, если она имеет пакеты GO, динамический SQL и т. д.). Если они пропустили первоначальную установку, пользователь может удалить хранимые процедуры или удалить базу данных, запустить трассировку Profiler и попросить вас создать их заново (в этом случае они будут захватывать операторы CREATE PROCEDURE). Вы можете запретить Профилировщику раскрывать текст snoopers, встраивая sp_password в код в виде комментария:
CREATE PROCEDURE dbo.foo
WITH ENCRYPTION
AS
BEGIN
SELECT 'foo'
-- comment: sp_password
END
посмотрите документацию по созданию процедуры MSDN