2012-03-04 5 views
7

Я написал хранимую процедуру в SQL Server.Я хочу скрыть скрипт хранимой процедуры в SQL Server 2008

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

Пожалуйста, помните, что я работаю над стандартным идентификатором входа и паролем. Который делится с каждым.

Следовательно, я могу позволить каждому выполнить процедуру. Но они не должны видеть сценарий.

Cheers! thanks

+0

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

ответ

7

Вы ищете WITH ENCRYPTION, который зашифровывает код позади хранимой прок.

CREATE PROCEDURE usp_MyProc 
WITH ENCRYPTION 
AS 
SELECT * 
FROM myTable 

Только один нюанс, из MSDN:

Пользователи, которые не имеют доступа к системным таблицам или файлам баз данных, не может получить обфусцированный текст. Тем не менее, текст будет доступен для привилегированных пользователей, которые могут либо обращаться к системным таблицам через порт ЦАП, либо напрямую обращаться к файлам базы данных.

Некоторые ссылки и дальнейшее чтение:

+0

Кроме того, 'WITH ENCRYPTION' в SQL Server фактически следует называть' WITH MINOR_OBFUSCATION'. Если вы знаете, что ищете, есть много ресурсов, которые помогут расшифровать системный объект, и они не ограничены привилегированными пользователями или ЦАП. –

+0

Правда, это не удержит кого-то, кто решил увидеть код, но у него будет подавляющее большинство людей. –

2

Используйте ключевое слово encryption для вашей хранимой процедуры. Это скроет код:

CREATE PROCEDURE dbo.foo 
WITH ENCRYPTION 
AS 
BEGIN 
    SELECT 'foo' 
END 
+0

любой может все еще запустить SP, верно? просто код скрыт – LearnByReading

+0

Это правильно. –

3

SQL Server на самом деле не обеспечивают надежный метод защиты кода модуля. Предложение WITH ENCRYPTION должно называться как-то по строкам WITH LOOSE_OBFUSCATION, так как «шифрование» очень легко срывается. Вы не сможете использовать что-либо в SQL Server, чтобы сделать код незаменимым для всех, кроме самых случайных зрителей - любой, кто решил, сможет бить родные методы, не нарушая пота.

Хотя это может быть достаточно хорошим для ваших нужд, возможно, более безопасный способ (но все же не идеальный) заключается в том, чтобы поместить некоторую или всю бизнес-логику процедуры into the CLR (read more here).

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